Python para emular la cola remota -f?

Tenemos varios servidores de aplicaciones y un servidor central de monitoreo.

Actualmente estamos ejecutando ssh con "tail -f" desde el servidor de monitoreo para transmitir varios archivos de registro de texto en tiempo real desde los servidores de aplicaciones.

El problema, aparte de la fragilidad de todo el enfoque, es que matar el proceso ssh a veces puede dejar atrás los procesos de cola de zombie. Nos hemos burlado de usar -t para crear pseudo-terminales, pero a veces todavía deja a los procesos de zombies, y -t aparentemente también está causando problemas en otros lugares con el producto de programación de trabajo que estamos usando.

Como una solución barata y sucia hasta que podamos obtener un registro centralizado adecuado (Logstash y RabbitMQ, con suerte), espero escribir un envoltorio Python simple que comenzará ssh y "tail -f", aún capturará la salida, pero almacene el PID en un archivo de texto en el disco para que podamos eliminar el proceso de cola apropiado más adelante si es necesario.

l principio, intenté usar subprocess.Popen, pero luego tuve problemas para recuperar la salida "tail -f" en tiempo real (que luego debe ser redirigida a un archivo), aparentemente habrá una gran cantidad de bloqueos / problemas de búfer.

Algunas fuentes parecían recomendar el uso de pexpect, pxssh o algo así. Idealmente, me gustaría usar solo Python y sus bibliotecas incluidas, si es posible; sin embargo, si una biblioteca es realmente la única forma de hacer esto, entonces estoy abierto a eso.

¿Hay una manera fácil y agradable de hacer que Python inicie ssh con "tail -f", imprima la salida en tiempo real en STDOUT local aquí (para que pueda redirigir a un archivo local) y también guarde el PID en un archivo para matar después? ¿O incluso si no uso ssh con tail -f, alguna forma de transmitir un archivo remoto en tiempo (casi) real que incluye guardar el PID en un archivo?

Cheers, Victor

EDIT: Solo para aclarar - nosotrosquere el proceso final para morir cuando matamos el proceso SSH.

Queremos iniciar ssh y "tail -f" desde el servidor de monitoreo, luego, cuando hagamos Ctlr-C, el proceso de cola en la caja remota también debería morir: nosotros no Quiero que se quede atrás. Normalmente, ssh con -t debería solucionarlo, pero no es totalmente confiable, por razones que no entiendo, y no funciona bien con nuestra programación de trabajo.

Por lo tanto, usar la pantalla para mantener vivo el proceso en el otro extremo no es lo que queremos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta