Création de plusieurs connexions SSH à la fois à l'aide de Paramiko
Le code ci-dessous fonctionne grep dans une machine via SSH et imprime les résultats:
import sys, os, string
import paramiko
cmd = "grep -h 'king' /opt/data/horror_20100810*"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.10.3.10', username='xy', password='xy')
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.write('xy\n')
stdin.flush()
print stdout.readlines()
Comment puis-je grep cinq machines en une seule fois (alors que je n'ai pas de retard important), que de mettre tout cela en cinq variables et de les imprimer tous.
source d'informationauteur Whit3H0rse
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de mettre les appels en différents threads (ou processus, mais ce serait exagéré) qui à son tour nécessite le code dans une fonction (qui est de toute façon une bonne idée: vous n'avez pas substantielle de code dans un module de haut niveau).
Par exemple:
Si vous avez eu beaucoup plus de cinq hôtes, je vous conseille d'utiliser plutôt un "pool de threads" architecture et une file d'attente des unités de travail. Mais, pour seulement cinq, c'est plus simple de coller à la "thread dédié" du modèle (surtout depuis qu'il n'y a pas de pool de threads dans la bibliothèque standard, de sorte que vous aurez besoin d'un tiers paquet comme threadpool... ou beaucoup de subtils code personnalisé de votre propre bien sûr;-).
Il suffit d'exécuter le tout dans une
for
boucle, et ne pas oublier de fermer l'entrée standard stdin avant de passer à l'itération suivante. C'est, après la lignestdin.flush()
ajouter la lignestdin.close()