使用相同的ssh连接提交多个cmd

时间:2019-01-15 09:47:49

标签: python ssh subprocess

我正在编写一个脚本,该脚本应该连接到远程服务器并执行一些命令。我能够通过子流程做到这一点:

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集。

0 个答案:

没有答案