有没有一种方法可以使用Python向终端应用程序发送命令

时间:2019-03-29 15:53:11

标签: python bash shell console

我正在运行linux,因为您可能已经知道了。 因此,我用PHP和Python编写了一个gameserver面板,可以安装,启动和停止我为其编写脚本的任何游戏。经过一番摸索的测试之后,我现在将游戏添加到列表中,并且我第一个受支持的游戏将是夸张的。 我想要实现的是,我可以将命令发送到终端中运行的任何应用程序,还可以将输出读取到控制台窗口。。我的下一步将是Minecraft和其他一些游戏。我知道这两个游戏都有一个查询端口,但是a)我不知道如何从php向它发送查询,b)我想潜在地支持那里的每个游戏。

仅作记录,我可以从正在运行的进程中提取一个进程ID,如果有帮助的话。

所以我跑了ps aux | grep qzero,它说服务器在pts / 2上打开。因此,我正在测试的命令是暂停,当我手动键入该命令时,它会回显一些东西。

我在网上找到了命令

echo pause > /dev/pts/2

但是它真正要做的只是在控制台窗口中回显暂停。

我一直在在线搜索,但我想我真的不知道该寻找什么。也许与整个stdin和stdout的东西有关。

我知道这在其他语言中也是可行的,因为我已经在PufferPanel中弄乱了,它们也具有此功能。但这有一些缺陷,所以我决定编写自己的面板。

1 个答案:

答案 0 :(得分:0)

所以实际上并不难。我没有找到直接将其发送到终端的解决方案,但是在tmux的帮助下,它可以完成。

您基本上开始一个会话,然后

tmux send-keys -t sessionname -l command

tmux send-keys -t sessionname Enter

这在Python中集成到应用程序中没问题。

进一步了解https://serverfault.com/questions/178457/can-i-send-some-text-to-the-stdin-of-an-active-process-running-in-a-screen-sessi

显然也可以在屏幕上完成。