[Shell/Batch] Exécuter une commande sur plusieurs serveurs

Exécuter une commande sur plusieurs serveurs [Shell/Batch] - Shell/Batch - Programmation

Marsh Posté le 24-11-2016 à 11:52:50    

Bonjour,

 

Je veux exécuter une simple commande (par exemple "df -h" ) sur plusieurs serveurs.
Pour ça j'ai écris ce petit script:

 
Code :
  1. while read Srv
  2. do
  3.     echo "----$Srv-----"
  4.     hssh ${Srv} 'df -h' 2>/dev/null
  5.     retour=$?
  6.     if [[ $retour == 0 ]]
  7.     then
  8.         echo "OK pour $Srv"
  9.     else
  10.         echo "ECHEC pour $Srv (retour = $retour)"
  11.     fi
  12. done < liste_serveurs.txt


(hssh est un ssh maison qui utilise l'authentification par clé.)

 

Le script fonctionne mais uniquement pour le 1er serveur de la liste, il n’enchaîne pas:

 
Citation :

[mitch2pain@serveur ~]$ sh script.sh
----serveur1-----
Sys. de fichiers    Taille  Uti. Disp. Uti% Monté sur
/dev/mapper/vg_root-lv_root
                       11G  7,4G  2,8G  73% /
OK pour serveur1
[mitch2pain@serveur ~]$

 

On dirait qu'il reste coincé sur le serveur distant...

 

Si je remplace la ligne avec hssh par echo "pouet" ça marche:

Code :
  1. while read Srv
  2. do
  3.     echo "----$Srv-----"
  4.     echo "pouet"
  5.     retour=$?
  6.     if [[ $retour == 0 ]]
  7.     then
  8.         echo "OK pour $Srv"
  9.     else
  10.         echo "ECHEC pour $Srv (retour = $retour)"
  11.     fi
  12. done < liste_serveurs.txt
 

Exécution:

Citation :

----serveur1-----
pouet
OK pour serveur1
----serveur2-----
pouet
OK pour serveur2
----serveur3-----
pouet
OK pour serveur3

 

Comment je peux faire ?


Message édité par Mitch2Pain le 24-11-2016 à 11:53:59
Reply

Marsh Posté le 24-11-2016 à 11:52:50   

Reply

Marsh Posté le 24-11-2016 à 12:18:55    

Et faire un simple ping pour savoir si le serveur est présent ne suffirait pas ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 24-11-2016 à 12:44:19    

non je dois vraiment exécuter une commande pour mettre à jour un composant. Pour le topic j'ai juste mis 'df -h' pour simplifier la lecture.
Et les serveurs sont tous présents et actifs, c'est sur :)


Message édité par Mitch2Pain le 24-11-2016 à 12:44:50
Reply

Marsh Posté le 24-11-2016 à 23:19:55    

Passe à ansible,  tu gagneras du temps et de la modularité.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed