2017-03-26 1 views
-1

Je travaille sur l'automatisation. Ici, je suis confronté à un défi d'exécuter n nombre de commandes sur un périphérique Linux simultanément ou séquentiellement. Maintenant, j'utilise la méthode ci-dessous, mais j'ai créé une configuration statique pour chaque commande au lieu de cela est-il possible d'utiliser la liste des commandes. peut être le nombre de commandes va changer dans différents scénariosparamiko mutiple commandes comme argument

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) 

Répondre

1

Tenir compte de factoriser le code dans une fonction qui accepte commande pour exécuter et maintenir la commande dans une liste. Quelque chose comme

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] 
+0

Dans ce cas, comment nous pouvons gérer exception pour la connexion a échoué ou le temps – athi

+0

une idée sur l'ajout d'exception paramiko – athi

+0

cela dépend de ce que vous voulez faire en cas d'exception. Pour attraper l'exception, vous pouvez ajouter un essai, sauf dans la fonction – micebrain