2016-10-08 2 views
0

Ich möchte Benutzerpasswörter über meine API ändern, aber mein derzeitiger Code funktioniert nicht.PHP Ändern Linux Benutzer Passwort (passwd)

Vielleicht könnte mir jemand helfen.

$cmd1 = "passwd ".$info['instanceFtpUser']; 
$ssh->exec($cmd1."\n"); 
$ssh->exec($newpass."\n"); 
$ssh->exec($newpass."\n"); 
$ssh->disconnect(); 

btw, ich bin phpseclib mit

+0

Sie benötigen nur einen 'exec' Aufruf, das Passwort muss als Eingabe für den' passwd' Befehl übergeben werden, nicht als separate Befehle gesendet. – Robert

Antwort

0

Ihr Anwendungsfall ist ein Beispiel für die phpseclib docs: http://phpseclib.sourceforge.net/ssh/pty.html

Wie Sie sehen, können über Sie write zur Ausgabe an PTY verwendet werden soll, nicht exec:

$ssh->enablePTY(); 
$cmd1 = "passwd ".$info['instanceFtpUser']; 
$ssh->exec($cmd1); 
echo $ssh->read('password:'); 
$ssh->write($newpass."\n"); 
echo $ssh->read('password:'); 
$ssh->write($newpass."\n"); 
$ssh->disconnect(); 
+0

Fehler beim zweiten Passwort ding. Neues UNIX-Passwort eingeben: TrFBomqf0UTB root @ n3525325325252352523: ~ # TrFBomqf0UTB -bash: TrFBomqf0UTB: Befehl nicht gefunden. – myusername123

+0

Wenn Ihr 'passwd' Sie nicht zwingt, das neue Passwort erneut einzugeben (was Ihnen, wie ich aus der obigen Spur verstehe, entspricht), können Sie das zweite' read' und zweite 'write' aus meinem obigen Beispiel weglassen. –

0

Sie können auch sshpass (https://sourceforge.net/projects/sshpass/) verwenden können Sie damit ssh zu einen Remote-Server, ohne nach einem Passwort zu fragen. Sie können ein Skript erstellen, das SSH an den Remote-Server sendet und das neue Kennwort festlegt. Sie können dieses Skript dann mit der php exec-Funktion aufrufen.

Verwandte Themen