Я пишу скрипт, который должен подключиться к удаленному серверу и выполнить некоторую команду. Я смог сделать это с помощью подпроцесса:
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.