如何用Python远程执行进程
我想用Python连接到一个远程服务器,并在上面执行一个程序。我希望能够获取这个程序的返回代码和错误信息(如果有的话)。有没有人之前做过类似的事情?我之前用ssh做过,但我想通过Python脚本来实现。
谢谢!
3 个回答
43
使用一个叫做 paramiko 的ssh模块,这个模块专门为这个目的而创建,别再用 subprocess
了。下面是一个示例:
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()
更新:之前的示例使用了 ssh
模块,但这个模块现在已经不再推荐使用了,paramiko 是现在推荐的模块,它可以在python中实现ssh功能。
27
好吧,你可以在Python中调用ssh...
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]