Есть ли способ отправки команд в терминальное приложение на Python? - PullRequest
0 голосов
/ 29 марта 2019

Я использую Linux, как вы, возможно, уже поняли. Поэтому я написал панель игрового сервера на PHP и Python, которая может устанавливать, запускать и останавливать любую игру, для которой я пишу скрипт. После некоторого тестирования mumble я добавляю игры в список, и моя первая игра, которая будет поддерживаться, будет quakelive. Чего я хочу добиться, так это того, что я могу отправлять команды любому приложению, работающему в терминале, а также считывать вывод в окне консоли. . Следующими моими шагами будут Minecraft и некоторые другие игры. Я знаю, что в этих двух играх есть порт запроса, но а) я не знаю, как отправить запрос с php на этот б, и б) я хочу потенциально поддерживать все игры, которые есть.

Только для записи, я могу извлечь идентификатор процесса из уже запущенного процесса, если это поможет.

Итак, я побежал ps aux | grep qzero и он говорит, что сервер открыт на pts / 2. Таким образом, команда, с которой я тестирую, это pause, когда я набираю ее вручную, она возвращает некоторые вещи.

В сети я нашел команду

echo pause > /dev/pts/2

Но все, что он на самом деле делает, это выводит паузу в окно консоли.

Я искал в Интернете, но мне кажется, я не знаю, что искать. Может быть, это как-то связано со всем этим stdin и stdout.

Я знаю, что это возможно на других языках, так как я возился с PufferPanel, и у них тоже есть эта функция. Но у него есть некоторые недостатки, поэтому я решил написать свою панель.

1 Ответ

0 голосов
/ 29 марта 2019

Так что на самом деле это было не так сложно.Я не нашел решения отправить его напрямую в терминал, но с помощью 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

Очевидно, это также можно сделать на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...