Bonjour,
Je sollicite votre aide pour un bout de code que j'essaye en vain d'écrire mais je ne trouve pas de solution pour le faire marcher.
L'idée est de scripter un certains nombres de taches afin qu'elles soient effectuées en parallèle sur un certain nombre de serveurs (via du SSH). Avant de démarrer les thread, le script a besoin de demander un certain nombre d'informations à l'utilisateur :
- Le nombre de serveurs type A
- Le nombre de serveurs type B
- Le nom de chaques serveurs A
- Le nom de chaques serveurs B
Pour cette première étape j'ai procédé comme suit :
Je me retrouve donc avec le nom de mes serveurs stockés dans deux listes, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 print ("Combien de serveurs A ? ") nbServBP = int(input()) ServerBP = {} for i in range(nbServBP): ServerBP[i+1]=input("Nom du serveur A " + str(i+1)) print ("Combien de serveurs B ? ") nbServMP = int(input()) ServerMP ={} for i in range(nbServMP): ServerMP[i+1]=input("Nom du serveur B " + str(i+1))
- ServerBP :{1: 'serveur1', 2: 'serveur2', 3: 'serveur3', 4: 'serveur4', 5: 'serveur5'}
- ServerMP :{1: 'serveurA', 2: 'serveurB', 3: 'serveurC'}
Maintenant ce que je ne sais pas faire :
Pour chaque serveur de la liste l'idée est de lancer simultanément un thread avec une liste de taches (typiquement des commandes SSH par exemple)
Pour l'exemple on peut se contenter de lancer les instructions suivantes :
Si le script fonctionne alors le résultat devrait être :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 - Print (ServerBP[i+1]) - Time.sleep(3)
- Serveur1serveur2serveur3serveur4serveur5
J'ai essayé le bout de code ci-dessous mais bien évidemment ça ne fonctionne pas, ci-dessous le thread est lancé 5 fois et exécute la même itération avant de passer à la suite.
Moi je veux en réalité lancer toutes les itérations à la fois… Ou alors trouver un moyen de lancer un thread par serveur.
Pour donner plus d'infos si j'ai besoin de lancer des taches en paralleles c'est parce qu'un certain type d'actions doit être effectué sur chacun des serveurs à peu près au même moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 def test(): for i in range(nbServBP): print (ServerBP[i+1]) time.sleep(5) if __name__ == '__main__': for i in ServerBP: Thread(target = test).start()
J'ai beau chercher je ne vois pas de solution à ce problème. Si quelqu'un a une idée ou une piste de réflexion?
Partager