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érer code retour


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2021
    Messages : 14
    Par défaut Récupérer code retour
    Bonjour à tous

    Je souhaite récupérer le code retour d'une ligne de commande d'envoi de mail. Voici ma commande de mail:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $i | /usr/sbin/sendmail -t | echo $retour
    La variable $retour est définie avant avec ceci:

    Et en fait, j'aimerais récupérer ce code retour, pour l'afficher dans un fichier csv. Donc dans ma commande csv, j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$retour" >> file_$name_$datecsv.csv

    Sauf que le soucis, c'est que j'ai toujours un code retour 0, même si le mail ne s'envoie pas. Donc savez-vous comment bien récupérer e code retour de ma ligne de commande ?


    Merci : )

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par bierzo Voir le message
    Je souhaite récupérer le code retour d'une ligne de commande d'envoi de mail. Voici ma commande de mail:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $i | /usr/sbin/sendmail -t | echo $retour
    La variable $retour est définie avant avec ceci:

    Et en fait, j'aimerais récupérer ce code retour, pour l'afficher dans un fichier csv. Donc dans ma commande csv, j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$retour" >> file_$name_$datecsv.csv

    Sauf que le soucis, c'est que j'ai toujours un code retour 0, même si le mail ne s'envoie pas. Donc savez-vous comment bien récupérer e code retour de ma ligne de commande ?
    C'est pas très clair, l'ordre dans lequel sont exécutées tes instructions.

    Fais-tu ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat $i | /usr/sbin/sendmail -t 
    retour=$?
    echo $retour
    Il faut savoir que la valeur de $? change à chaque ligne de code. Pour pouvoir l'exploiter pleinement, il vaut mieux la stocker juste après l'instruction à tester (comme dans le code précédent) et non avant

    Et le | echo $retour est très... bizarre, ou au moins inhabituel

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2021
    Messages : 14
    Par défaut
    Voici le code complet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    retour=$?
     
    for i in $rep/*.eml
    do
     
    	#Récupérer a date d'envoie du mail
    	datemail=$(date +%Y%m%d%H%M%S)
    	echo "La date d'envoie du mail est $datemail"
     
    	#Envoyer le mail eml avec le pdf en pièce jointe
    	cat $i | /usr/sbin/sendmail -t | echo $retour
     
    	#Remplir csv
    	id="$(echo "$i"|cut -c10-28)"
    	echo "$retour;$datemail" >> file_$name_$datecsv.csv
     
    done

    Donc, si je comprends bien, au lieu de variabiliser mon $? avant, je devrais le faire directement à la suite de ma commande, donc ça donnerai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    for i in $rep/*.eml
    do
     
    	#Récupérer a date d'envoie du mail
    	datemail=$(date +%Y%m%d%H%M%S)
    	echo "La date d'envoie du mail est $datemail"
     
    	#Envoyer le mail eml avec le pdf en pièce jointe
    	cat $i | /usr/sbin/sendmail -t | echo $?
     
    	#Remplir csv
    	id="$(echo "$i"|cut -c10-28)"
    	echo "$retour;$datemail" >> file_$name_$datecsv.csv
     
    done
    Mais dans ce cas, comment faire pour récupérer a valeur du code retour, dans mon csv. Je veux dire si je mets le "$?" dans la ligne qui génère le csv, comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$retour;$?" >> file_$name_$datecsv.csv
    Est-ce que ça va fonctionner ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    echo ne reçoit rien sur son entrée standard (stdin) via un pipe.
    on ne peut pas faire : echo 'bla bla' | echo "non mais ça va pas !?".
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2021
    Messages : 14
    Par défaut
    Donc, comment récupérer le code retour de ma commande sendmail ?

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 120
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 120
    Par défaut
    Citation Envoyé par bierzo Voir le message
    Donc, comment récupérer le code retour de ma commande sendmail ?
    Tu lis les réponses qu'on te donne ? Tout est dans le # 2…

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

Discussions similaires

  1. [AC-2010] modèle papier à lettre Outlook dans code Vba envoi mail Access
    Par ioco34 dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/05/2019, 20h38
  2. [WD12] Récupérer code retour HTTP
    Par tunizar dans le forum WinDev
    Réponses: 4
    Dernier message: 12/04/2018, 12h47
  3. [OL-2010] Récupérer date d'envoi mail
    Par baptoo61 dans le forum Outlook
    Réponses: 0
    Dernier message: 16/01/2015, 17h01
  4. [Batch] Comment récupérer code retour system de mon .bat
    Par cyborg123 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 12/11/2009, 10h43
  5. Code pour envoi mail
    Par nogood1 dans le forum Access
    Réponses: 7
    Dernier message: 05/10/2006, 17h31

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