Bonjour,
Je veux exécuter une simple commande (par exemple "df -h" ) sur plusieurs serveurs.
Pour ça j'ai écris ce petit script:
Code :
- while read Srv
- do
- echo "----$Srv-----"
- hssh ${Srv} 'df -h' 2>/dev/null
- retour=$?
- if [[ $retour == 0 ]]
- then
- echo "OK pour $Srv"
- else
- echo "ECHEC pour $Srv (retour = $retour)"
- fi
- 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 :
- while read Srv
- do
- echo "----$Srv-----"
- echo "pouet"
- retour=$?
- if [[ $retour == 0 ]]
- then
- echo "OK pour $Srv"
- else
- echo "ECHEC pour $Srv (retour = $retour)"
- fi
- 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