Como executar um processo remotamente usando python

votos
28

Eu quero ligar também e executar um processo em um servidor remoto usando python. Eu quero ser capaz de obter o código de retorno e stderr (se houver) do processo. Alguém já fez algo assim antes. Eu tenho feito isso com ssh, mas eu quero fazer isso a partir do script python.

Felicidades.

Publicado 03/06/2009 em 19:12
fonte usuário
Em outras línguas...                            


3 respostas

votos
23

Bem, você pode chamar ssh a partir de 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]
Respondeu 03/06/2009 em 19:15
fonte usuário

votos
40

Use o módulo ssh chamado paramiko que foi criado para este fim em vez de usar subprocess. Aqui está um exemplo a seguir:

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()

UPDATE: O exemplo usado para usar o sshmódulo, mas que agora é preterido e paramiko é o módulo para cima até à data que fornece a funcionalidade de SSH no pitão.

Respondeu 10/01/2012 em 01:55
fonte usuário

votos
4

Talvez se você quer envolver as porcas e parafusos das chamadas ssh você poderia usar Tecido Esta biblioteca é voltada para a implantação eo gerenciamento do servidor, mas também poderia ser útil para este tipo de problemas.

Também dê uma olhada no aipo . Este implementa uma fila de tarefas para Python / Django em vários corretores. Talvez um exagero para o seu problema, mas se você estiver indo para chamar mais funções em várias máquinas Ela vai lhe poupar muita dor de cabeça gerenciar suas conexões.

Respondeu 19/09/2012 em 08:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more