Tengo una screen
instancia ejecutándose y necesitaría ejecutar algo de código dentro de screen
, y obtener el resultado en mi script.
La primera parte es bastante fácil, solo screen -S session_name -X eval 'stuff "$cmd"\015'
.
(Modifiqué una línea que encontré en un script )
La segunda parte, sacar la salida, es más complicada. ¿Cómo puedo obtener toda la salida, sea cual sea su tamaño?
bash
logs
gnu-screen
recording
1ace
fuente
fuente
screen -X stuff …
; Una pregunta similar a la tuya .stuff
, que era lo que tenía problemas para entender.Respuestas:
Podrías comenzar
screen
con la-L
opción. Esto hará que la pantalla cree un archivoscreenlog.n
(la parte n es numérica, comenzando con un cero) en el directorio de trabajo actual.En su caso, esto se vería así:
screen -S session_name -L -X eval 'stuff "$cmd"\015'
Mientras recuerdes limpiar después, esto debería coincidir con lo que estás buscando.
Para la última línea del registro, se puede obtener fácilmente
tail -1 screenlog.0
o se puede analizar todo el registro de la forma que desee.fuente
screen
comando que le di fue solo enviar el comando. Para comenzarscreen
, uséscreen -dmS name program
;-)Un matiz más que puede ser útil en el futuro: si está en una sesión de pantalla, puede solicitar interactivamente que se cree el archivo de registro. Presione ctrl- a H(Control-A seguido de H mayúscula) para solicitar que la pantalla comience a volcar cualquier ventana en la que se encuentre en un archivo de registro.
fuente
man screen
respuesta es que tengo que escribir CA H, sin el Control solo para H. Sad, que esto no captura el registro anterior.