Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1686 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2292647
Mitch2Pain
Posté le 24-11-2016 à 11:52:50  profilanswer
 

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
mood
Publicité
Posté le 24-11-2016 à 11:52:50  profilanswer
 

n°2292650
rufo
Pas me confondre avec Lycos!
Posté le 24-11-2016 à 12:18:55  profilanswer
 

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
n°2292653
Mitch2Pain
Posté le 24-11-2016 à 12:44:19  profilanswer
 

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
n°2292693
roondar
Posté le 24-11-2016 à 23:19:55  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

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

 

Sujets relatifs
Plusieurs variables ou un tableau? (Performances)[Batch] Lancer un application avec control
Modification page de démarrage navigateurs internet en batchCreer un bouton macro plusieurs feuilles d'un classeur
[BASH] Commande mv sur macSript Batch comparaison de 2 ip
[Shell] Calcul difference entre 2 dates[Shell] Linux, // de traitement
offset de plusieurs elements[batch] renommer fichier
Plus de sujets relatifs à : [Shell/Batch] Exécuter une commande sur plusieurs serveurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR