phpseclib ssh附加到屏幕进程exec命令回应响应

时间:2012-04-01 19:47:03

标签: php ssh gnu-screen phpseclib

您好我正在尝试使用Phpseclib连接到我的专用服务器,然后附加到屏幕进程,然后在屏幕进程中执行命令并返回结果,

我可以让PHP连接到服务器,我想重新连接到屏幕进程,但我尝试回显的命令只返回“1”而不是我期望的。

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . '.././static/classes/phpseclib');

include('.././static/classes/phpseclib/Net/SFTP.php');

//SSH Run Command
$ssh = new Net_SSH2($host);
if (!$ssh->login($user,$pass)) {
    exit('Login Failed SSH');
}

//Run the server
echo 'Attaching to screen process...';
$ssh->exec('screen -r server1');
echo 'Attached';
echo $ssh->write('status\n');
?>

如果有人可以对我的问题有所了解,我将不胜感激。

另外一些信息我连接这样的原因是因为它是我连接的SRCDS服务器,我可以使用PHP脚本查询srcds游戏服务器,但它不会工作,因为我在共享虚拟主机上阻止我需要套接字连接的端口。

1 个答案:

答案 0 :(得分:0)

您可能需要$ssh->write("screen -r server1\n")代替$ssh->exec('screen -r server1');

exec()的问题在于它始终在新频道上执行命令。这不是phpseclib的问题,而是SSH协议。这就像通过putty做“screen -r server1”,关闭putty,重新打开putty,做“状态”并期望它输出你想要的东西。它不会。