2012-04-12 13 views
3

Ich versuche die phpseclib zu verwenden, um das Passwort meines entfernten Servers durch seine NET_SSH2 Funktionen zu ändern. Unten ist was ich benutze.Ändern des Passworts von Unix remote server durch PHP SSH

<?php 
    require_once('Net/SSH2.php'); 

    $ssh = new Net_SSH2('server1.server.com'); 
    if (!$ssh->login('user', 'pass')) { 
     exit('Login Failed'); 
    } 

    $ssh->write("passwd\n"); 
    $ssh->read('(current) UNIX Password:'); 
    $ssh->write("oldpass\n"); 
    $ssh->read('New password:'); 
    $ssh->write("newpass\n"); 
    $ssh->read('Retype new password:'); 
    $ssh->write("newpass\n"); 
    echo $ssh->read('[prompt]'); 

    ?> 

Jedes Mal hängt mein Skript einfach und scheint nicht viel zu tun. Was könnte ich hier falsch machen? Hier

ist die Dokumentation zu diesem Thema: http://phpseclib.sourceforge.net/documentation/net.html

+2

Wenn Sie Ihr Programm un ausführen der 'strace (1)', was sind die genauen Zeichenfolgen, die es _does_ liest? Warum wartest du nicht auf die erste Shell-Eingabeaufforderung? Wenn Sie Debug-'echo'-Anweisungen hinzufügen, wo genau stoppt es? – sarnold

+0

Es stellte sich heraus, dass ich einen einzelnen Buchstaben groß geschrieben habe. Funktioniert jetzt wie ein Zauber. Vielen Dank für Ihre ausführliche Antwort. – user1328041

+2

@ user1328041 Wenn Sie selbst gefunden und beantwortet haben, dann zögern Sie nicht, die Frage zu löschen, damit andere sie nicht lesen – Novellizator

Antwort

2

Dies kann Ihnen helfen,

<?php 
$output = shell_exec('sudo passwd root'); 
echo "<pre>$output</pre>"; 
?> 

Sie shell_exec jede Linux-Befehl durch Funktion ausführen können

1

Dies sollte für Sie arbeiten

<?php 
    include('Net/SSH2.php'); 

    $ssh = new Net_SSH2('www.domain.tld'); 
    if (!$ssh->login('username', 'password')) { 
     exit('Login Failed'); 
    } 

    echo $ssh->read('[email protected]:~$'); 
    $ssh->write("passwd\n"); 
    echo $ssh->read('(current) UNIX password:'); 
    $ssh->write("oldpassword\n"); 
    echo $ssh->read('New UNIX password:'); 
    $ssh->write("newpassword\n"); 
    echo $ssh->read('Retype new UNIX password:'); 
    $ssh->write("newpassword\n"); 
    echo $ssh->read('passwd: all authentication tokens updated successfully.'); 

?> 
+0

danke, das hat gut für mich funktioniert! – Petrik

Verwandte Themen