【问题标题】:Phpseclib hangs on read()Phpseclib 挂在 read() 上
【发布时间】:2015-02-14 01:18:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: php ssh phpseclib


    【解决方案1】:

    引用例子:

    <?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-&gt;setTimeout(2)。此时$ssh-&gt;read() 将在两秒后返回,无论它从 SSH 服务器返回什么输出。提示 - 无论它是什么 - 都应该在该输出中。

    【讨论】:

    • 如果您认为这是答案,请标记答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多