I’ve been playing around with SSH and now I need to change a user’s password via the PHP’s ssh2,
Here’s my code:
$stream = ssh2_exec($ssh, 'passwd test1234');
stream_set_blocking($stream, true);
$data = '';
while($buffer = fread($stream, 4096)) {
$data .= $buffer;
}
fclose($stream);
echo $data."<hr/>";
$stream = ssh2_exec($ssh, 'saulius123');
stream_set_blocking($stream, true);
$data = '';
while($buffer = fread($stream, 4096)) {
$data .= $buffer;
}
echo $data."<hr/>";
$stream = ssh2_exec($ssh, 'saulius123');
stream_set_blocking($stream, true);
$data = '';
while($buffer = fread($stream, 4096)) {
$data .= $buffer;
}
echo $data."<hr/>";
However this just make’s my PHP script hang, any ideas?
ssh2_execinvokes the command; to send input, you’ll need to write to the stream.That is,
$streamgives you access to standard input and standard output. So you’ll need to write the password you wish to set usingfwriteon$streambefore trying to read back the output.Since you’ve put the stream in blocking mode,
passwdis awaiting your input (the password) at the same time your script is waiting forpasswd. As a result, the script hangs.