paramiko多个命令作为参数

时间:2017-03-26 10:07:46

标签: python paramiko

我正致力于自动化。在这里,我面临着同时或顺序在Linux设备上执行n个命令的挑战。现在我使用下面的方法,但我已经为每个命令创建静态配置,而不是有任何方式使用命令列表。可能是命令的数量会在不同的场景中发生变化

ssh    = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user,password=passwd )
stdin, stdout, stderr = ssh.exec_command(cmd1)
output1 = stdout.read()
data1 = str(output1)
displaymessage1 = data1
stdin, stdout, stderr = ssh.exec_command(cmd2)
output1 = stdout.read()
data1 = str(output1)
#print data1
displaymessage2 = data1
stdin, stdout, stderr = ssh.exec_command(cmd3)
output1 = stdout.read()
data1 = str(output1)
#print data1
displaymessage3 = data1
stdin, stdout, stderr = ssh.exec_command(cmd4)
output1 = stdout.read()
data1 = str(output1)
#print data1
displaymessage4 = data1
stdin, stdout, stderr = ssh.exec_command(cmd5)
output1 = stdout.read()
data1 = str(output1)  

1 个答案:

答案 0 :(得分:1)

考虑将代码重构为一个函数,该函数接受运行命令并将命令保留在列表中。像

这样的东西
def run_command(cmd):
    ssh    = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(host, username=user,password=passwd )
    stdin, stdout, stderr = ssh.exec_command(cmd)
    output = stdout.read()
    return str(output)

commands_list = [cmd1, cmd2, cmd3, cmd4]

# run each command in the list and keep the output in data
data = [run_command(cmd) for cmd in commands_list]
相关问题