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

Shell et commandes GNU Discussion :

[expect] comment boucler spawn si la commande échoue ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 25
    Par défaut [expect] comment boucler spawn si la commande échoue ?
    Bonjour à tous,

    j'ai réalisé un script qui réalise en gros, les opérations suivantes avec expect:

    1-connexion en ssh sur une machine distante (spawn ssh -l utilisateur xxx.xxx.xxx.xxx
    2-envoi de la commande1 à la machine distante
    3-envoi de la commande2 à la machine distante
    ....

    j'ai deux petit soucis

    le premier, c'est que la connexion ssh peut échouer , du coup j'ai parfois ceci:

    ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused

    et mon script s'arrete la ...
    comment faire pour qu'il re-essaye de se connecter tant qu'il n'y arrive pas ?

    l'autre probleme, moins compliqué je pense, et que je voudrais garder une trace de l'execution de ce script, un log quoi. comment faire ?

    Merci pour vos avis éclairés

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    maFunc() {
       nc -w5 -z xxx.xxx.xxx.xxx 22 && {
          tes_commandes
       } || maFunc
    }
     
    maFunc
    ...
    ?

    sachant que si nc échoue (ta machine distante n'est pas joignable sur le port 22), on reprend le test par nc, et si nc réussit (la machine distante est joignale sur le port 22), alors tes commandes sont excutées.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 25
    Par défaut
    Merci N_BaH

    j'ai appris une commande

    par contre je vois pas comment passer un nom d'utilisateur et comment utiliser ma clef privée ssh avec nc ?

    il n'y a pas moyen de le faire avec expect ?, sachant que lorsque la connexion échoue, le script s'arrete brutalement.

    idéalement un truc qui detecte le message "ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused" , qui arrete le script est le relance

    Merci

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Citation Envoyé par threepwood
    par contre je vois pas comment passer un nom d'utilisateur et comment utiliser ma clef privée ssh avec nc ?
    nc va seulement scanner le port 22, si le port est disponible sur la machine distante, alors tes commandes (ssh user@distMach 'tes_commandes', ou expect (que je ne connais pas)) sont exécutées, sinon on recommence jusqu'à ce que nc sorte avec un code d'erreur à zéro, et tes commandes sont exécutées.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 25
    Par défaut
    rhaaa j'avais pas capté le fonctionnement de la chose

    c'est génial ! merci beaucoups N_BaH

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 25
    Par défaut
    mince j'ai un os...
    nc fonctionne a merveille, mais est-ce qu'on peut y passer un argument ?

    voila mon script.sh:

    maFunc() {
    nc -w5 -z xxx.xxx.xxx.xxx && {
    monscript2.sh $1
    } || maFunc
    }

    si j'appelle celui-vi par ./script.sh TOTO
    je voudrais que TOTO soit la variable correspondant à $1

    j'ai essayé à coup de NARGS, mais rien à faire, ca renvoi une chaine vide à chaque fois...

    Merci

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

Discussions similaires

  1. Comment ouvrir une fénêtre de commande DOS
    Par izeba dans le forum Windows XP
    Réponses: 4
    Dernier message: 24/09/2006, 01h43
  2. Réponses: 9
    Dernier message: 11/09/2006, 16h22
  3. Comment lancer une ligne de commande dans un processus en Java.
    Par doyouknow56 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 13/05/2006, 11h55
  4. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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