Phpseclib挂起读()

时间:2015-02-13 17:10:35

标签: php ssh phpseclib

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

中的示例

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

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

1 个答案:

答案 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服务器返回的是什么输出。提示 - 无论是什么 - 应该在输出中。