python - open - pxssh
Cómo ejecutar un proceso de forma remota con Python (3)
También quiero conectarme y ejecutar un proceso en un servidor remoto usando Python. Deseo poder obtener el código de retorno y stderr (si corresponde) del proceso. ¿Alguien ha hecho algo como esto antes? Lo he hecho con ssh, pero quiero hacerlo desde el script de python.
Aclamaciones.
Bueno, puedes llamar a ssh desde Python ...
import subprocess
ret = subprocess.call(["ssh", "user@host", "program"]);
# or, with stderr:
prog = subprocess.Popen(["ssh", "user@host", "program"], stderr=subprocess.PIPE)
errdata = prog.communicate()[1]
Tal vez si desea ajustar los detalles de las llamadas ssh, podría usar Fabric. Esta biblioteca está orientada a la implementación y administración del servidor, pero también podría ser útil para este tipo de problemas.
También eche un vistazo a Celery . Esto implementa una cola de tareas para Python / Django en varios intermediarios. Tal vez sea un exceso para su problema, pero si va a llamar a más funciones en varias máquinas, le ahorrará muchos dolores de cabeza al administrar sus conexiones.
Utilice el módulo ssh llamado paramiko que se creó para este fin en lugar de usar un subprocess
. Aquí hay un ejemplo a continuación:
from paramiko import SSHClient
client = SSHClient()
client.load_system_host_keys()
client.connect("hostname", username="user")
stdin, stdout, stderr = client.exec_command(''program'')
print "stderr: ", stderr.readlines()
print "pwd: ", stdout.readlines()
ACTUALIZACIÓN: el ejemplo utilizado para usar el módulo ssh
, pero que ahora está en desuso y paramiko es el módulo actualizado que proporciona la funcionalidad ssh en python.