如何使用python远程执行进程
我想使用Python连接到远程服务器并在其上执行一个进程。我希望能够获取流程的返回代码和stderr(如果有)。以前有人做过这样的事吗。我已经用ssh完成了,但我想用Python脚本完成如何使用python远程执行进程,python,ssh,Python,Ssh,我想使用Python连接到远程服务器并在其上执行一个进程。我希望能够获取流程的返回代码和stderr(如果有)。以前有人做过这样的事吗。我已经用ssh完成了,但我想用Python脚本完成 干杯。好吧,您可以从python调用ssh import subprocess ret = subprocess.call(["ssh", "user@host", "program"]); # or, with stderr: prog = subprocess.Popen(["ssh", "user@ho
干杯。好吧,您可以从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]
使用为此目的而创建的,而不是使用子流程
。下面是一个例子:
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
模块,但该模块现在已被弃用,是用python提供ssh功能的最新模块。如果您想了解ssh调用的细节,可以使用它
该库面向部署和服务器管理,但对于此类问题也很有用
也来看看。这在各种代理上实现了Python/Django的任务队列。对于您的问题来说,这可能是一种过火的做法,但是如果您要在多台机器上调用更多函数,那么管理您的连接将为您省去很多麻烦 您需要确保对远程主机进行基于密钥的身份验证,并使用正确的密钥。否则,系统会提示您输入密码。很好,显然我已经过时了-本打算推荐os.spawnlp,但我看到引入了子流程模块来替换它。谢谢你,伙计。通过ssh执行命令时,如果ssh本身没有任何问题,则返回代码和stderr是exec'd命令的返回代码。我可以使用popen类和communicate()方法从那里访问它。即使在发布这个答案的时候,ssh模块的前一个版本(称为Paramiko)仍然存在。最好使用Fabric或Paramiko,如下答案中所述。Fabric是比paramiko更高级别的接口。重复:示例:由于收购,这是Microsoft许可的开源。它在Linux上运行良好。