Отправка нескольких cmd через одно соединение ssh - PullRequest
0 голосов
/ 15 января 2019

Я пишу скрипт, который должен подключиться к удаленному серверу и выполнить некоторую команду. Я смог сделать это с помощью подпроцесса:

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 внутри: для каждого r в [r1, r2, r3] выполните набор специфических для него cmd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...