Forum Programmation.shell Script connexions SSH multiples

Posté par  (site web personnel) .
Étiquettes : aucune
0
11
déc.
2006
J'ai tenté d'écrire un petit script permettant d'exécuter une commande sur plusieurs machines d'un réseau. L'identification SSH se fait via une clé RSA. Mais j'obtiens une erreur lors de l'exécution du script...
./admin.sh: line 24: syntax error: unexpected end of file


#!/bin/sh

SUBNET=192.168.20.
ADDRESS_BEGIN=2
ADDRESS_END=16

echo -n Vérification de l\'identification root...' '
if [ `whoami` != root ]
then
echo Erreur > /dev/stderr
exit 1
fi
echo OK

for ((i = $ADDRESS_BEGIN; i <= $ADDRESS_END; i++));
do
ssh $SUBNET$i << END_SSH
mkdir blah
exit
END_SSH;
done

exit 0



Quelqu'un peut-il m'aider ? Merci.
  • # ;

    Posté par  . Évalué à 2.

    s/^END_SSH;/END_SSH/

    enfin, il me semble
    • [^] # Re: ;

      Posté par  . Évalué à 0.

      j'y avais pensé, mais comme c'est dans un

      for condition;
      do
      command;
      done

      j'ai pas osé soumettre l'idée.
      • [^] # Re: ;

        Posté par  . Évalué à 0.

        De plus, il est important que le END_SSH soit complétement au début de la ligne (pas d'indentation).
        • [^] # Re: ;

          Posté par  . Évalué à 1.

          Ce n'est pas obligatoire, il peut être indenté avec des tabulations en utilisant la notation:
          <<-END_SSH
          C'est très pratique pour faire des scripts lisibles.
  • # CSSH

    Posté par  (site web personnel) . Évalué à 3.

    • [^] # Re: CSSH

      Posté par  . Évalué à 1.

      Bof, d'abord ce n'est qu'un gadget en mode interactif, pas vraiment utile pour l'automatisation centralisée.

      Ensuite, mieux vaut ne pas utiliser cela et s'adresser à chaque machine individuellement, car si toutes les machines ne sont pas identiques, ça risque de merder.

      C'est un outil d'administration bien trop CowBoy pour un environnement professionnel en tout cas.
      • [^] # Re: CSSH

        Posté par  . Évalué à 1.

        bon alors dsh: http://www.netfort.gr.jp/~dancer/software/dsh.html

        Le but est d'administrer facilement des machines très similaires (ie, cluster). Bien sûr les groupes de machines doivent être correctement définis ...

        IMNSHO en environnement professionnel on a justement intérêt à garder les machines conformes à un standard bien défini, et ne pas gérer des déviations inutiles et coûteuses.
        • [^] # Re: CSSH

          Posté par  . Évalué à 2.

          IMNSHO en environnement professionnel on a justement intérêt à garder les machines conformes à un standard bien défini, et ne pas gérer des déviations inutiles et coûteuses.


          absolument... et une chose importante pour garder un standard, c'est de réduire les opérations humaines au strict minimum, d'organiser la distribution des opérations de manière centralisée, avec des mécanismes de validation et de contrôle de qualité.

          A ce titre, mettre en place un système de distribution de scripts et de fichiers de config est bien plus intéressant que de lancer les commandes de manière synchrone sur toutes les machines (l'administration synchrone est un excellent moyen de créer des disparités dans un parc de serveurs)
      • [^] # Re: CSSH

        Posté par  (site web personnel) . Évalué à 0.

        Ben c'est pour des clusters, par définition des noeuds identiquement configurés. ça aide à faire ce qu'il veut avec son script.

        S'adresser à chaque machine individuellement c'est le meilleur moyen d'en oublier une.
        --
        Colin, cowboy sysadmin
        • [^] # Re: CSSH

          Posté par  . Évalué à 2.

          Ben c'est pour des clusters


          En l'occurence, dans la question il n'était pas marqué que c'était pour des clusters. Il y a une différence entre lancer une commande sur un cluster et une série de machines distinctes.

          A part pour des trucs extrêmement basics, il vaut mieux travailler avec un système asynchrone garantissant que si une machine a raté le rendez-vous (parcequ'elle était éteinte, qu'un routeur était down, ...), elle puisse se retrouver par la suite dans l'état correct.

          En plus un shell distribué, c'est un bon moyen de faire une fausse manip sur plein de machines à la fois.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.