Phpseclib hangs on read()


Phpseclib hangs on read()

我正在尝试执行sudo命令使用的示例

http://phpseclib.sourceforge.net/ssh/examples.html#sudo

但脚本在第一次读取()后挂起。在那之后,我需要重新启动整个服务器,apache会继续工作,但php不会。

引用示例:

<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}
echo $ssh->read('username@username:~$');
$ssh->write("sudo ls -la'n");
$output = $ssh->read('#[pP]assword[^:]*:|username@username:~'$#', NET_SSH2_READ_REGEX);
echo $output;
if (preg_match('#[pP]assword[^:]*:#', $output)) {
    $ssh->write("password'n");
    echo $ssh->read('username@username:~$');
}
?>

username@username:~$是提示的占位符。您是否将其更改为服务器上的任何提示?

如果您通过PuTTY或OpenSSH或其他方式SSH登录,您可以看到这样的提示。或者,您可以执行$ssh->setTimeout(2)。在这一点上,$ssh->read()将在两秒钟后返回,无论它从SSH服务器返回什么输出。无论是什么提示,都应该在该输出中。