Отправка ввода в сеанс экрана снаружи

18

Мой сценарий таков:

У меня сеанс экрана работает в удаленном месте. Внутри этого экрана находится консольная программа. При запуске без экрана эта программа запускается в терминале и принимает команды на свой стандартный ввод.

Мне нужен способ удаленной отправки команды на экран, чтобы эта команда была получена консольной программой. Может быть так:

Мой ПК -> SSH Отправить Msg Авто -> Сеанс экрана -> Программа (получена команда запуска)

Таким образом, с удаленного ПК я могу отправлять через SSH команды на экран, который отправляет их в программу. Программа их принимает и выполняет.

Луис Альварадо
источник

Ответы:

17

Если я правильно понимаю, вы хотите отправить входные данные программе, запущенной в сеансе экрана. Вы можете сделать это с помощью stuffкоманды экрана . Используйте параметр экрана, -Xчтобы выполнить команду в сеансе экрана, не присоединяясь к ней.

screen -S sessionname -p windowname -X stuff 'command1
command2
'

Если вы хотите увидеть вывод программы, посмотрите команды hardcopy, logи logfile.

Жиль "ТАК - перестань быть злым"
источник
Уже пробовал команду вещи, но она только отправляет команды, которые с экрана. Вы видите, что он принимает только те команды, которые относятся к экрану, а не программу, которую я использую.
Луис Альварадо
@CYREX: stuffотправляет символы в точности так, как будто вы их набрали. Что именно вы попробовали, каков был ожидаемый эффект и что вместо этого произошло?
Жиль "ТАК - перестань быть злым"
Я вижу, у вас есть часть -p. У меня не было этого. Добавил эту часть, и теперь она отправляет команду, но как я могу нажать ENTER для каждой команды?
Луис Альварадо
Нашел это. Addint $ перед кавычками и с C как экранированными. Как это -X вещи $ 'Показать пользователей \ n'
Луис Альварадо
@CYREX: -pнеобходимо (или, по крайней мере, хорошая идея), если имеется более одного окна. Чтобы «нажать Enter», просто включите новую строку в аргумент (то есть внутри кавычек), как я и сделал.
Жиль "ТАК - перестань быть злым"