首页 > 解决方案 > 有没有办法在 Python 中向终端应用程序发送命令

问题描述

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

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

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

网上我找到了命令

echo pause > /dev/pts/2

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

我一直在网上搜索,但我想我真的不知道要寻找什么。也许它与整个标准输入和标准输出有关。

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

标签: pythonbashshellconsole

解决方案


所以实际上并没有那么难。我没有找到将其直接发送到终端的解决方案,但在 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

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


推荐阅读