1

我正在使用 Cygwin 向 Windows 服务器发送命令。几天前我问了一个问题,但仍然没有答案。我对 phpseclib 有一个大问题,它是 $ssh->write(); 命令。我用过 $ssh->exec(); 但是发送到服务器的命令正在下载游戏服务器文件,这可能需要长达 20 分钟,一段时间后 php 页面超时,因为它超过了 FastCGI 超时设置。所以,我认为 $ssh->write(); 可以为我解决它,但我发送到服务器的命令没有得到执行。这是 exec 的命令和我尝试使用的 write:

$ssh->exec('C:/hldsupdatetool/hldsupdatetool -command update -game ".$game." -dir ".$dir');

并且此代码永远加载然后超时。我已经通过将 FastCGI 的超时设置更改为一小时来解决这个问题,这是最大值。此命令确实在服务器上执行。

这是我试图发送但不执行的写命令:

$ssh->write('C:/hldsupdatetool/hldsupdatetool -command update -game ".$game." -dir ".$dir."\r\n");

此命令不会在服务器上执行。回显它时我得到的响应是“1”。

非常感谢任何帮助!目前正在制作一个开源游戏服务器控制面板。

提前致谢!

最好的问候,汤姆。

4

1 回答 1

0

要读取 $ssh->write() 的响应,您需要执行 $ssh->read()。例如。

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

$ssh->write() 正在输出 1,因为 $ssh->write() 正在返回 true。

无论如何,您可以尝试... $ssh->setTimeout(5) 或其他什么。

不知道是否可以将Windows命令发送到后台?在 Linux 中,有 nohup 和 &。

于 2012-10-27T04:15:12.130 回答