我一直在研究在我的网络浏览器中显示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结构?
的Ajax
$(document).ready(function() {
$('#sub').click(function() {
$.ajax({ url: 'load.php?trace='+$('#num').val(), success:function(data){
} });
});
});
有人注意到我的代码有什么问题吗?
答案 0 :(得分:1)
请改为尝试:
$ssh = new Net_SSH2('127.0.0.1', 3972);
$ssh->login('user', 'password');
$ssh->setTimeout(2);
$ssh->enablePTY();
echo $ssh->exec('script ');
使用phpseclib, a pure PHP SSH2 implementation。可能比libssh2更适合你。