2012-09-30 7 views
6

Estoy usando tmux para ejecutar una consola de servidor. Para comprobar si la consola está respondiendo, me gustaría utilizar send-keys para ejecutar un comando en la consola:¿Cómo obtener el resultado de send-keys en tmux?

tmux send-keys -t mysess:mywin "show info" Enter 

(En realidad, estoy actualmente el registro de la salida de la consola completa a un archivo y leer la última línea, pero espero que existe una solución mejor.)

tmux pipe-pane -o -t mysess:mywin 'cat >> mysess-mywin.log' 
+0

intenta agregar la etiqueta para el sistema operativo que está utilizando - esto ayudará a otros a encontrar su pregunta y respuesta eso. La etiqueta [tmux] tiene solo 75 seguidores. – Artemix

+0

No verá la salida de 'show info', ya que aparecerá en' mysess: mywin', no en la ventana donde ejecutó el comando 'send-keys'. – chepner

Respuesta

0

una opción es llamar a un guión con send-keys que se ejecuta 'mostrar la información' y tienen la secuencia de comandos de nuevo los resultados a la sesión de tmux 'teclas enviar' usted está en. esto solo funciona si estás en tmux para empezar.

4

El contexto de cómo se está accediendo a la salida tendrá un impacto si esta solución es mejor o no, pero esto podría funcionar:

tmux send-keys -t <session:win.pane> '<command>' Enter 
tmux capture-pane -t <session:win.pane> 
tmux show-buffer 

usted debería ser capaz de jugar con la -S y -E opciones de capture-pane , así como el tamaño del panel, para capturar con precisión la salida. Si le gusta, también puede usar show-panes y una expresión regular pequeña para capturar la altura del panel, y luego simplemente use -S <height - 1> para capturar solo la última línea.

Es entonces fácil de leer esto desde otro programa como tal (por ejemplo, en python):

print Popen(['tmux', 'show-buffer'], stdout=PIPE).communicate()[0] 
Cuestiones relacionadas