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 :

Récupération du code retour dans ssh


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 49
    Par défaut Récupération du code retour dans ssh
    Bonjour à vous les gurus !

    pour automatiser le backup de l'image système des mes serveurs linux (toutes distributions confondues), j'utilise ssh avec la commande suivante depuis le serveur de sauvegarde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ssh -l root $serveur "tar czOPp --same-owner --exclude /proc --exclude /var/cache --exclude /tmp --exclude /sys/devices --exclude /poubelle --exclude /var/mail --exclude /var/lib --exclude /var/spool --exclude /var/log /  | nc -w 5 serveur port"
            RC=$?
    Mais de cette manière, le ssh ne renvoie que le code retour de la dernière commande effectuée, à savoir "| nc -w 5 serveur port" dans ce cas.
    Or je souhaiterais récupérer le code retour de la commande tar pour ensuite envoyer un mail en fonction de sa valeur.

    Et bien sûr je ne sais pas comment faire ...

    Avez-vous une solution à mon problème svp ?

    Merci d'avance pour vos éventuelles réponses ...

    Bruno

  2. #2
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    En utilisant un fichier de log ?

    genre $ commande 1> warning.log 2>erreur.log a placer au bon endroit, si tu me met a la fin de ton pipe je suis pas sur que ça les fasse tous :/

    [edit] non en fait apres ton tar avant l'aute pipe, tu met un truc du genre :

    et dans ton fichier t'as le retour de tar

    [edit2] je vois que tu le met dans une variable, mais le tar est entre double quote, il ne doit pas etre entre simple quote inverse (AltGr + 7) pour être éxécuté ?

    [edit3]Trouvé tu le met après le nc, donc $? contient le retour de nc
    fait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh -l root $serveur "tar czOPp --same-owner --exclude /proc --exclude /var/cache --exclude /tmp --exclude /sys/devices --exclude /poubelle --exclude /var/mail --exclude /var/lib --exclude /var/spool --exclude /var/log /  | RC=$? | nc -w 5 serveur port"

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 49
    Par défaut
    J'ai déjà essayé comme ça, mais ça ne marche pas.

    J'ai fais aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh -l root $serveur "tar blablabla 2>out.err | nc blablabla"
    Sur le client je récupère bien un fichier "out.err" qui contient effectivement les erreurs générés par tar.

    Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh -l root $serveur "tar blablabla | nc blablabla" 2>out.err
    j'obtiens en local sur mon serveur un fichier "out.err" qui contient les erreurs générées par le ssh, mais pas celles du tar ...

    Je ne vois pas comment faire ...

    [EDIT] oups, désolé, j'ai répondu avant de lire tes edit ...
    Je regarde ce que tu as mis et je te tiens au courant ^^

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 49
    Par défaut
    Je ne comprends pas le sens de ce que tu as écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar ..... | RC=$? | nc ....
    A quoi sert de piper une commande dans une variable ??

  5. #5
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    A quoi te sert le RC=$? à récupérer la sortie d'une commande non ?
    Si tu le met a la fin, il te renvoie celui de la dernière commande, tu es d'accord ?
    Donc si tu le pipe en cours de route juste après le tar, il te stocke dans RC le retour de tar, c'est ce que tu veux, non ? tu peux aussi le mettre dans un fichier (echo $? > fichier)

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 49
    Par défaut
    Citation Envoyé par SnakemaN Voir le message
    A quoi te sert le RC=$? à récupérer la sortie d'une commande non ?
    Jusque là on est d'accord.
    Citation Envoyé par SnakemaN Voir le message
    Si tu le met a la fin, il te renvoie celui de la dernière commande, tu es d'accord ?
    Jusque là, on est toujours d'accord
    Citation Envoyé par SnakemaN Voir le message
    Donc si tu le pipe en cours de route juste après le tar, il te stocke dans RC le retour de tar, c'est ce que tu veux, non ?
    Là, nous ne sommes plus d'accord !! Ceci n'est pas une syntaxe acceptable en shell ... Le séparateur de commande en shell est le ";" et non le "|".
    Si je veux faire ce que tu dis, il faut écrire: tar ....; RC=$? ce qui est incompatible avec le " | nc ...."
    Citation Envoyé par SnakemaN Voir le message
    tu peux aussi le mettre dans un fichier (echo $? > fichier)
    Non ! Pour la même raison que ci-dessus, pour faire "echo $?>fichier.log, il faut mettre un ";" après le tar, ce qui est également incompatible avec le " | nc ..."

    Est-ce que je me trompe ?

Discussions similaires

  1. Récupération du code retour d'un job dans un REXX
    Par zosuser dans le forum JCL - SORT
    Réponses: 4
    Dernier message: 31/10/2014, 14h32
  2. récupération du code HTML dans une zone de texte
    Par deubelte dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/01/2011, 23h25
  3. [batch] Récupération du code retour d'une commande
    Par fenrys_1 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 06/03/2009, 18h05
  4. [MySQL] Récupération de code php dans une base de données
    Par kitana dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/03/2006, 00h25
  5. Execution programme et récupération du code retour
    Par Dr_GonZO dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2005, 15h20

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