2

Web ブラウザーで ssh 出力を表示する方法に取り組んでいます。私が持っているのは、いくつかの grep 引数を指定して tail -f /var/log/syslog を実行する、私が作成したシェル スクリプトです。

次に、このシェル スクリプトを呼び出して、返されたデータをリアルタイムで表示します。私が持っているのは、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 とシェル構造のためにどちらを実行する必要がありますか?

アヤックス

            $(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 ');

これは、純粋な PHP SSH2 実装である phpseclib を使用します。libssh2よりもうまくいくかもしれません。

于 2014-09-18T13:21:01.257 に答える