IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

ssh dans une boucle while


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut ssh dans une boucle while
    Bonsoir,

    Je souhaite exécuter de nombreuses commandes sur différents serveurs distants et stocker le résultat dans un fichier en local.

    J'ai donc procédé de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    if [ -f result ]
    then
        rm result
    fi
    while read line
    do
            ssh -A -n  user@$line  'echo  `getHostname`';' `getIp`';' `getOs`';' `getCpuType`';' `getCpuNb`';' `getCoreNb`' >> result
    done < list
    Voici le message que je reçois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    bash: getHostname: command not found
    bash: getIp: command not found
    bash: getOs: command not found
    bash: getCpuType: command not found
    bash: getCpuNb: command not found
    bash: getCoreNb: command not found
    J'ai essayé plusieurs méthodes mais sans succès. Quelqu'un aurait une idée svp ?

    Par avance merci

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par illegalsene Voir le message
    Bonsoir,

    Je souhaite exécuter de nombreuses commandes sur différents serveurs distants et stocker le résultat dans un fichier en local.

    J'ai donc procédé de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    if [ -f result ]
    then
        rm result
    fi
    while read line
    do
            ssh -A -n  user@$line  'echo  `getHostname`';' `getIp`';' `getOs`';' `getCpuType`';' `getCpuNb`';' `getCoreNb`' >> result
    done < list
    Voici le message que je reçois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    bash: getHostname: command not found
    bash: getIp: command not found
    bash: getOs: command not found
    bash: getCpuType: command not found
    bash: getCpuNb: command not found
    bash: getCoreNb: command not found
    J'ai essayé plusieurs méthodes mais sans succès. Quelqu'un aurait une idée svp ?

    Par avance merci
    il faut que tu mettes les chemins complets vers les commandes/agent ou que charges le profile complet de l'utilisateur (pour avoir le PATH)

    tout simplement soit .bashrc soit .profile soit .cshrc etc...selon l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@host " . bashrc ; echo $(getCpuNb ; getCoreNb ; etc....)" >> result

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    Citation Envoyé par frp31 Voir le message
    il faut que tu mettes les chemins complets vers les commandes/agent ou que charges le profile complet de l'utilisateur (pour avoir le PATH)

    tout simplement soit .bashrc soit .profile soit .cshrc etc...selon l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@host " . bashrc ; echo $(getCpuNb ; getCoreNb ; etc....)" >> result

    Les commandes que je lance sont dans le même fichier. Je ne les ai pas mise dans mon post dans un soucis de clarté.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par illegalsene Voir le message
    Les commandes que je lance sont dans le même fichier. Je ne les ai pas mise dans mon post dans un soucis de clarté.
    ça change rien, il faut quand même que les commandes soient trouvées

  5. #5
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Citation Envoyé par illegalsene Voir le message
    Les commandes que je lance sont dans le même fichier. Je ne les ai pas mise dans mon post dans un soucis de clarté.
    Le truc c'est que tu ouvres un nouveau shell sur d'autres machines. Ces machines doivent donc avoir en local le fichier avec les fonctions que tu veux utiliser. Ensuite, il faut que tu sources ce fichier sur les machines distantes avant d'utiliser les fonctions.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    Citation Envoyé par Marc3001 Voir le message
    Le truc c'est que tu ouvres un nouveau shell sur d'autres machines. Ces machines doivent donc avoir en local le fichier avec les fonctions que tu veux utiliser. Ensuite, il faut que tu sources ce fichier sur les machines distantes avant d'utiliser les fonctions.
    Donc si j'ai bien compris, je dois faire :
    - créer fichier .sh avec mes fonctions
    - le positionner sur les serveurs cibles (dans la home par exemple)

    Comment faire pour sourcer le fichier ?

    Merci.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    Voici ce que je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ssh -A -n user@ip " . /home/user/script.sh ; echo '`getIp`'" > result
    Malheureusement je reçois en sortie dans le fichier result l'ip de mon poste local et non celle du serveur distant...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tkinter] Méthode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/02/2006, 00h06
  2. Problème de SCANF dans une boucle WHILE
    Par FidoDido® dans le forum C
    Réponses: 4
    Dernier message: 30/12/2005, 17h42
  3. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  4. Réponses: 6
    Dernier message: 17/06/2005, 16h51
  5. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo