[Administration] Hé moi zem pa fair la mm choz 10 foi

Dans notre modeste vie d’admin sys nous sommes souvent amenés à exécuter les mêmes commandes sur de multiples machines de la même plateforme .

L’utilisation d’une clé ssh pour l’authentification est un grand classique afin de se passer du mot de passe . Mais lorsqu’il s’agit de devoir taper une commande , ont se connectent à l’ensemble des machines .

Il serait beaucoup plus facile d’avoir un script qui se connecte à « n » machines et exécute une ou « x » commandes sur chacunes d’entre elles.

Pour cela on aura besoins du paquet « expect » . Commençons par l’installer .

  1. /*
  2. apt-get install expect
  3. */

En gros « expect » est un outil qui permets d’intéragir avec des programmes interactifs . Prenons le cas de ssh .
Quand vous vous connecter à une machine distante pour la 1ere fois il vous est demandé si oui ou non vous voulez vous connecter à cette machine .
Eh c’est la que expect intervient comme le montre le script ci-dessous .

  1. /*
  2. #!/usr/bin/expect -f
  3. set pass « votre_pass »
  4. set serveur [lrange $argv 0 0]
  5. set timeout -1
  6. spawn ssh root@$serveur
  7. expect {
  8. « *?connecting* » { send « yes\r« }
  9. « *?assword:* » {send « $pass\r« }
  10. }
  11. expect « *?:* »
  12. #send — « df -h\r »
  13. send « uptime\r« 
  14. send « exit\r« 
  15. expect eof
  16. */

Toujours pour les fainéants

  1. /*
  2. #!/bin/sh
  3. for machines in VM1 VM2 ;
  4. do
  5. ./execution-a-distance.sh « $machines« 
  6. done
  7. */

Bien-sur ceci n’est qu’une ébauche du potetienls de cet outil . Qui je pense changera certaines de vos habitudes. Sauf si bien sur vous aviez d’autres méthodes que je ne connaisse.
Merci à momo pour cette découverte 😉

Related posts

4 Thoughts to “[Administration] Hé moi zem pa fair la mm choz 10 foi”

  1. mwa non + m pas fair lé m^m choz 10 x

    Merci pour l’astuce !

  2. lmns972

    😉
    de rien

  3. Don

    Expect est bien, mais l’exemple n’est vraiment pas bon. Pour éviter d’avoir le prompt pour savoir si oui ou non vous acceptez de vous connecter à une machine, il y a des options d’openssh, par exemple :
    ssh -o StrictHostKeyChecking=no vm1 « df -h ; uptime » fera la même chose.

    Pour le faire sur n machines de macnière efficace, regarder du côté de pssh ou clustershell (et même pexpect ;-))

  4. lmns972

    C’est bien pour cela que je mets « *?connecting* » { send — « yes\r »}

    J’ai un prompt mais le script réponds à ma place .

    Après, à ce que je vois il existe d’autres solutions que je ne connaissais pas .

    Je vais essayer et voir ce que cela donne .

Leave a Comment