Envío de entrada a una sesión de pantalla desde afuera

18

Mi escenario es este:

Tengo una sesión de pantalla ejecutándose en una ubicación remota. Dentro de esta pantalla hay un programa basado en consolas. Cuando se ejecuta sin pantalla, este programa se inicia en el terminal y acepta comandos en su entrada estándar.

Lo que quiero es una forma de enviar de forma remota un comando a la pantalla para que el programa de consola reciba este comando. Tal vez así:

Mi PC -> SSH Send Msg Auto -> Screen Session -> Program (Ejecutar comando recibido)

Entonces, desde una PC remota, puedo enviar a través de comandos SSH a la pantalla que los envía al programa. El programa los acepta y los ejecuta.

Luis Alvarado
fuente

Respuestas:

17

Si entiendo correctamente, desea enviar información a un programa que se ejecuta dentro de una sesión de pantalla. Puede hacer esto con el stuffcomando de la pantalla . Use la -Xopción de pantalla para ejecutar un comando en una sesión de pantalla sin adjuntarlo.

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

Si quieres ver la salida del programa, ver hardcopy, logy logfilelos comandos.

Gilles 'SO- deja de ser malvado'
fuente
Ya probé el comando stuff pero solo envía comandos que son de la pantalla. Verá que solo acepta los comandos relacionados con la pantalla, no el programa que estoy usando relacionado.
Luis Alvarado
@CYREX: stuffenvía caracteres, exactamente como si los hubiera escrito. ¿Qué probaste exactamente, cuál fue el efecto deseado y qué sucedió en su lugar?
Gilles 'SO- deja de ser malvado'
Veo que tienes la parte -p. Yo no tenía eso. Agregó esa parte y está enviando el comando ahora, pero ¿cómo puedo presionar ENTER para cada comando?
Luis Alvarado
Lo encontré. Addint $ antes de las comillas y tener C like escapa en él. Me gusta esto -X cosas $ 'mostrar usuarios \ n'
Luis Alvarado
@CYREX: -pes necesario (o al menos una buena idea) si hay más de una ventana. Para "presionar Enter", simplemente incluya una nueva línea en el argumento (es decir, dentro de las comillas), como lo he hecho.
Gilles 'SO- deja de ser malvado' el