2010-11-14 15 views
15

Quiero ejecutar un script de Python en varios (15+) equipos remotos usando SSH. Después de invocar el script/comando, necesito desconectar la sesión de ssh y mantener los procesos ejecutándose en segundo plano durante el tiempo que sea necesario.Ejecutar script de python remoto a través de SSH

He utilizado Paramiko y PySSH en el pasado, así que no tengo problemas para volver a utilizarlos. Lo único que necesito saber es cómo desconectar una sesión ssh en python (ya que normalmente el script local esperaría que cada máquina remota completara el procesamiento antes de continuar).

Respuesta

21

Esto podría funcionar, o algo similar:

ssh [email protected] nohup python scriptname.py & 

Básicamente, echar un vistazo a la orden nohup.

+0

Gracias. Esto es exactamente lo que quería. :) – nka

+0

¡Hola! Estoy intentando esta solución, pero mi python no se ejecuta ... ¿Cómo puedo depurar lo que está mal? Gracias :) – Pitto

4

En máquinas con Linux, puede ejecutar el script con 'at'.

echo "scriptname.py pitón" | al ahora

+0

Gracias por el consejo, pero me las arreglé para hacerlo a través de nohup. – nka

+1

:). Personalmente encontré que 'at' era más versátil para mí, pero 'nohup' es lo suficientemente bueno en muchas situaciones. – chnrxn

+0

También probé esta solución, pero mi python no se ejecuta ... ¿Cómo puedo depurar lo que está mal? Gracias :) – Pitto

1

Si va a realizar tareas repetitivas en muchos ejércitos, como por ejemplo la implementación de software y ejecutar secuencias de comandos de configuración, usted debe considerar el uso de algo así como Fabric

Fabric es una biblioteca de Python (2.5 o superior) y una herramienta de línea de comandos para que simplifica el uso de SSH para implementación de aplicaciones o tareas de administración de sistemas .

Se proporciona un conjunto básico de operaciones para la ejecución de comandos locales o remotos shell (normalmente o a través de sudo) y la carga/descarga de archivos, así como la funcionalidad auxiliares tales como preguntar al usuario que ejecuta para la entrada, o abortar la ejecución .

El uso típico implica crear un módulo de Python que contenga una o más funciones de , y luego ejecutarlas a través de la herramienta de línea de comandos fab.

Cuestiones relacionadas