【发布时间】:2015-02-14 01:18:23
【问题描述】:
我正在尝试执行 sudo 命令 使用示例来自
http://phpseclib.sourceforge.net/ssh/examples.html#sudo
但脚本在第一次 read() 后挂起。之后我需要重新启动整个服务器,apache 继续工作,但不是 php。
【问题讨论】:
我正在尝试执行 sudo 命令 使用示例来自
http://phpseclib.sourceforge.net/ssh/examples.html#sudo
但脚本在第一次 read() 后挂起。之后我需要重新启动整个服务器,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 服务器返回什么输出。提示 - 无论它是什么 - 都应该在该输出中。
【讨论】: