python - 有没有办法在 Python 中向终端应用程序发送命令
问题描述
我正在运行 linux,您可能已经知道了。所以我用 PHP 和 Python 编写了一个游戏服务器面板,它可以安装、启动和停止我为其编写脚本的任何游戏。在用 mumble 进行了一些测试之后,我现在将游戏添加到列表中,并且我的第一个要支持的游戏将是 quakelive。我想要实现的是我可以向终端中运行的任何应用程序发送命令,并将输出读取到控制台窗口。. 我的下一步将是 Minecraft 和其他一些游戏。我知道这两个游戏有一个查询端口,但是 a) 我不知道如何从 php 向它发送查询 b) 我想潜在地支持所有的游戏。
仅作记录,如果有帮助,我已经可以从正在运行的进程中提取进程 ID。
所以我跑了 ps aux | grep qzero,它说服务器在 pts/2 上打开。所以我正在测试的命令是暂停,当我手动输入它时,它会回显一些东西。
网上我找到了命令
echo pause > /dev/pts/2
但它真正所做的只是在控制台窗口中回显暂停。
我一直在网上搜索,但我想我真的不知道要寻找什么。也许它与整个标准输入和标准输出有关。
我知道这在其他语言中是可能的,因为我在 PufferPanel 中摆弄过,他们也有这个功能。但它有一些缺陷,所以我决定编写自己的面板。
解决方案
所以实际上并没有那么难。我没有找到将其直接发送到终端的解决方案,但在 tmux 的帮助下,它可以完成。
你基本上开始一个会话,然后
tmux send-keys -t sessionname -l command
tmux send-keys -t sessionname Enter
这在 Python 中集成到应用程序中是没有问题的。
显然也可以在屏幕上完成。
推荐阅读
- javascript - 如何将 Selector 与我的 Utility 功能结合使用?
- ruby-on-rails - Rails 中的 Geocoder gem 返回:超出查询限制
- asp.net-core - 用于 IFormFile 的 NuGet 包
- php - 如何测试在其他类中创建的对象上调用的方法?
- rest - 公开记录开放 API 是一种好习惯吗?
- ios - 成功登录后无法关闭 UIViewController
- android - 自定义编辑文本可以正常工作,但某些 ViVO 设备无法正常工作
- bash - 如何使用 find 命令复制位于多个位置的目录的内容并保留目录结构?
- python - Python/tkinter:一次命令执行两次更改标签
- javascript - 某些网站上 Safari 中的 Javascript 替换错误