我正在编写一个脚本,该脚本应该连接到远程服务器并执行一些命令。我能够通过子流程做到这一点:
def ssh_to_exec_cmd(COMMAND):
process = subprocess.Popen(["ssh", "-t", "%s" % myhost, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
proc_stdout = process.communicate()[0].strip()
print proc_stdout
return proc_stdout
现在,我希望在远程服务器上执行的cmds根据情况而有所不同。例如:我有一个设备列表[r1,r2,r3],对于每个路由器,要执行的cmd集合是不同的{r1:[cmd10,cmd11],r2:[cmd20,cmd21,cmd22],r3:[ cmd30,cmd31,cmd32,cmd34]}。我想知道是否有一种方法可以只打开一个ss连接(带有子进程)并在其中包含一个for循环:对于[r1,r2,r3]中的每个r,执行特定于它的cmd集。>