2

我一直在研究一种在我的网络浏览器中显示 ssh 输出的方法。我所拥有的是我创建的一个 shell 脚本,它使用一些 grep 参数执行 tail -f /var/log/syslog 。

现在我想调用这个shell脚本并实时显示返回的数据。我所拥有的是一个调用 php 函数的 ajax 请求

public function siptrace($num) {

if(is_numeric($num)) {

    if($ssh = ssh2_connect('127.0.0.1', 3972)) {
        if(ssh2_auth_password($ssh, 'user', 'password')) {
            $stream = ssh2_exec($ssh, 'script ');
            stream_set_blocking($stream, true);
            $data = '';
            sleep(1);
            while($line = fgets($stream)) {
                flush(); 
                echo $line . "<br>";
            }
        }
    }

}

}

我通过运行简单的命令(例如 ls)验证了连接性。但是现在当我尝试实时 grep 数据时,它不会返回任何内容。我可以看到ajax调用加载和加载,由于while和shell结构应该这样做吗?

阿贾克斯

            $(document).ready(function() {

                $('#sub').click(function() {

                    $.ajax({ url: 'load.php?trace='+$('#num').val(), success:function(data){

                    } });

                });

            });

有人注意到我的代码有什么问题吗?

4

1 回答 1

1

试试这个:

$ssh = new Net_SSH2('127.0.0.1', 3972);
$ssh->login('user', 'password');
$ssh->setTimeout(2);
$ssh->enablePTY();
echo $ssh->exec('script ');

它使用phpseclib,一个纯 PHP SSH2 实现。可能比 libssh2 更适合你。

于 2014-09-18T13:21:01.257 回答