Enviando entrada para uma sessão de tela de fora

18

Meu cenário é este:

Eu tenho uma sessão de tela em execução em um local remoto. Dentro desta tela há um programa baseado em consolada. Quando executado sem tela, este programa inicia no terminal e aceita comandos em sua entrada padrão.

O que eu quero é uma maneira de enviar remotamente um comando para a tela, para que esse comando seja recebido pelo programa do console. Talvez assim:

Meu PC -> SSH Enviar Msg Auto -> Sessão de Tela -> Programa (comando Executar recebido)

Assim, a partir de um PC remoto, posso enviar via SSH comandos para a tela que os envia ao programa. O programa os aceita e os executa.

Luis Alvarado
fonte

Respostas:

17

Se bem entendi, você deseja enviar uma entrada para um programa em execução dentro de uma sessão de tela. Você pode fazer isso com o stuffcomando da tela . Use a -Xopção de tela para executar um comando em uma sessão de tela sem anexá-lo.

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

Se você quiser ver a saída do programa, ver hardcopy, loge logfilecomandos.

Gilles 'SO- parar de ser mau'
fonte
Já tentei o comando stuff, mas ele envia apenas comandos que são da tela. Você vê que aceita apenas os comandos relacionados à tela, e não o programa que estou usando.
Luis Alvarado
@ CYREX: stuffenvia caracteres, exatamente como se você os tivesse digitado. O que exatamente você tentou, qual foi o efeito pretendido e o que aconteceu?
Gilles 'SO- stop be evil'
Vejo que você tem a parte -p. Eu não tive isso. Adicionada essa parte e ele está enviando o comando agora, mas como posso pressionar ENTER para cada comando?
Luis Alvarado
Encontrei. Adicione $ $ antes das aspas e tenha C como escape. Curtiu -X stuff $ 'show users \ n'
Luis Alvarado
@ CYREX: -pé necessário (ou pelo menos uma boa ideia) se houver mais de uma janela. Para "pressionar Enter", basta incluir uma nova linha no argumento (ou seja, dentro das aspas), como eu fiz.
Gilles 'SO- stop be evil'