我正在尝试执行sudo命令 使用
中的示例http://phpseclib.sourceforge.net/ssh/examples.html#sudo
但是在第一次read()之后脚本挂起。之后我需要重新启动整个服务器,apache继续工作但不是php。
答案 0 :(得分:2)
引用示例:
<?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服务器返回的是什么输出。提示 - 无论是什么 - 应该在输出中。