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

Linux Discussion :

Créer un script qui envoie un mail


Sujet :

Linux

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut Créer un script qui envoie un mail
    Bonjour

    J'aimerais créer un petit script_1 qui execute un script_2 et envoi un email à l'utilisateur.

    Je donnerais 2 arguments à script_1 :
    1) une chaine qui contient le nom d'un fichier
    2) une autre chaine qui contient l'adresse courriel de l'utilisateur

    J'aimerais savoir s'il y a déja des script de ce genre.

    voici le format général

    >script_1 monfichier abc@xyz

    script_2 a comme argument "monfichier"

    Merci.

  2. #2
    Membre éprouvé
    Avatar de _solo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 889
    Points : 1 228
    Points
    1 228
    Par défaut
    ca se fait en quatres lignes
    ou sinon il y a la commande mail to:

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _solo
    ca se fait en quatres lignes
    ou sinon il y a la commande mail to:
    C'est quoi ces 4 lignes ?

    la commande elm ?

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    script_1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/ksh
     
    script_2 $1
    mail $2 <<EOF
    message
    EOF
    Effectivement : 4 lignes. Mais faut faire ça un peu mieux et vérifier les 2 arguments au moins. Pour mail, je ne suis pas sur => man mail

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre éprouvé
    Avatar de _solo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 889
    Points : 1 228
    Points
    1 228
    Par défaut
    Citation Envoyé par diamonds
    C'est quoi ces 4 lignes ?
    la commande elm ?
    Si tu utilise linux au quotidien , va falloir se mettre un jour ou l'autres au script shell.

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _solo
    Si tu utilise linux au quotidien , va falloir se mettre un jour ou l'autres au script shell.
    Non je ne l'utilise pas.

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _Mac_
    script_1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/ksh
     
    script_2 $1
    mail $2 <<EOF
    message
    EOF
    Effectivement : 4 lignes. Mais faut faire ça un peu mieux et vérifier les 2 arguments au moins. Pour mail, je ne suis pas sur => man mail
    Ok merci bien Mac

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _Mac_
    script_1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/ksh
     
    script_2 $1
    mail $2 <<EOF
    message
    EOF
    Effectivement : 4 lignes. Mais faut faire ça un peu mieux et vérifier les 2 arguments au moins. Pour mail, je ne suis pas sur => man mail
    Ok maintenant ca marche bien merci.

    Script_2 fait créer un fichier et le met dans un répertoire.

    Moi dans mon script_1 je dois recevoir le chemin du fichier qui a été crée par script_2 et le mettre dans le corps de mon email à la suite de http afin qu'il soit téléchargé.

    Y a t-il moyen de récuperer le chemin et le nom du ficher qui a été crée par script_2 ?

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Oui : faut faire un echo dans script_2 du nom du fichier et récupérer ce nom sur la sortie standard :

    script_2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    blablabla
    ...
    echo "$FICHIER"
    ...
    script_1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    blablabla
    ...
    FICHIER=`script_2 $1`
    mail $2 <<EOF
    message $FICHIER suite
    EOF
    Les ` s'obtiennent avec la combinaison de touches Alt Gr + 7. Si ça s'affiche pas du premier coup, appuyer sur la barre d'espace (ça arrive si tu utilises un clavier français : le ` sert aussi à faire les accents graves. Par exemple, fait Alt Gr + 7 + e et tu obtiens un è).

    ATTENTION !!! Il faut être sûr que script_2 n'écrit rien d'autre sur la sortie standard pour être sûr de ne récupérer que le nom du fichier dans script_1.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _Mac_
    Oui : faut faire un echo dans script_2 du nom du fichier et récupérer ce nom sur la sortie standard :

    script_2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    blablabla
    ...
    echo "$FICHIER"
    ...
    script_1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    blablabla
    ...
    FICHIER=`script_2 $1`
    mail $2 <<EOF
    message $FICHIER suite
    EOF
    Les ` s'obtiennent avec la combinaison de touches Alt Gr + 7. Si ça s'affiche pas du premier coup, appuyer sur la barre d'espace (ça arrive si tu utilises un clavier français : le ` sert aussi à faire les accents graves. Par exemple, fait Alt Gr + 7 + e et tu obtiens un è).

    ATTENTION !!! Il faut être sûr que script_2 n'écrit rien d'autre sur la sortie standard pour être sûr de ne récupérer que le nom du fichier dans script_1.
    d'accord merci.

    Comment puis-je concacatener deux chaines ?

    exemple la chaine "abc" avec la chaine "def"

    comment peuxt-on zipper un fichier dans un script et envoyer le fichier zippé (.zip)


    Merci.

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _Mac_
    Oui : faut faire un echo dans script_2 du nom du fichier et récupérer ce nom sur la sortie standard :

    script_2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    blablabla
    ...
    echo "$FICHIER"
    ...
    script_1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    blablabla
    ...
    FICHIER=`script_2 $1`
    mail $2 <<EOF
    message $FICHIER suite
    EOF
    Les ` s'obtiennent avec la combinaison de touches Alt Gr + 7. Si ça s'affiche pas du premier coup, appuyer sur la barre d'espace (ça arrive si tu utilises un clavier français : le ` sert aussi à faire les accents graves. Par exemple, fait Alt Gr + 7 + e et tu obtiens un è).

    ATTENTION !!! Il faut être sûr que script_2 n'écrit rien d'autre sur la sortie standard pour être sûr de ne récupérer que le nom du fichier dans script_1.
    Qu'est ce que représente $1 dans ce cas ?

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _Mac_
    Oui : faut faire un echo dans script_2 du nom du fichier et récupérer ce nom sur la sortie standard :

    script_2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    blablabla
    ...
    echo "$FICHIER"
    ...
    script_1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    blablabla
    ...
    FICHIER=`script_2 $1`
    mail $2 <<EOF
    message $FICHIER suite
    EOF
    et qu'est ce que la ligne
    FICHIER=`script_2 $1`
    fais au juste ?

  13. #13
    Membre éprouvé
    Avatar de _solo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 889
    Points : 1 228
    Points
    1 228
    Par défaut
    ah!ah! donc meme si tu compte pas l'utiliser au quotidien , apprend les bases et tu verra toute sa puissance
    http://routes-linux.scooba.org/scrip...bash_tuto1.php

    ps y en a surement des tutos sur DVP mais j'ai pas vu

  14. #14
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par diamonds
    et qu'est ce que la ligne fais au juste ?
    Ben ça fait exactement ce que tu veux que ça fasse : ça exécute la commande qui se trouve entre les `` et affecte la sortie standard en valeur de la variable.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  15. #15
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par _Mac_
    Oui : faut faire un echo dans script_2 du nom du fichier et récupérer ce nom sur la sortie standard :

    script_2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    blablabla
    ...
    echo "$FICHIER"
    ...
    script_1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    blablabla
    ...
    FICHIER=`script_2 $1`
    mail $2 <<EOF
    message $FICHIER suite
    EOF
    Les ` s'obtiennent avec la combinaison de touches Alt Gr + 7. Si ça s'affiche pas du premier coup, appuyer sur la barre d'espace (ça arrive si tu utilises un clavier français : le ` sert aussi à faire les accents graves. Par exemple, fait Alt Gr + 7 + e et tu obtiens un è).

    ATTENTION !!! Il faut être sûr que script_2 n'écrit rien d'autre sur la sortie standard pour être sûr de ne récupérer que le nom du fichier dans script_1.
    Salut Mac

    Si le script_2 produit plusieurs fichiers au lieu que un seul. Mettons il produit 5 fichiers dans 5 répertoire différents. Comment puis-je récupérer les noms des 5 fichiers et leur path respectif ?

    Est-ce que on peut faire comme ça ?

    script_2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    blablabla
    ...
    echo "$FICHIER1"
    echo "$FICHIER2"
    echo "$FICHIER3"
    echo "$FICHIER4"
    echo "$FICHIER5"
    ...
    script_1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    blablabla
    ...
    FICHIER1 =`script_2 $1`
    ici je plante. Faut trouver une autre façon de récupérer chaque sortie.
    mail $2 <<EOF
    message $FICHIER suite
    EOF

  16. #16
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Solution à ton problème via une variable de type tableau (array)
    Pour + d'infos, voir rubrique "Tableau" dans http://man.developpez.com/man1/bash.1.php

    Script 1 :

    #!/bin/bash

    # ... Traitement ...

    # Declaration d'une variable de type Tableau (array)
    declare -a TabVar=(`script2.sh`)
    > mail.dat #-- initialisation du fichier mail.dat

    if [[ ${#TabVar[*]} -eq 0 ]] ; then
    echo "*** Pas de fichier cree !!!" >> mail.dat
    MailObj="*** FATAL. Rapport `basename $0`"
    else
    for Fic in `echo ${TabVar[*]}` ; do
    echo "* repertoire : `dirname ${Fic}`, fichier : `basename ${Fic}`" >> mail.dat
    done
    MailObj="* Rapport `basename $0`"
    fi

    mail -s "$MailObj" $2 < mail.dat



    Script 2 :

    #!/bin/bash

    # "debut script2.sh"
    # traitement .../...
    File1="/chemin1/chemin11/fichier1"
    # traitement .../...
    File2="/chemin2/chemin22/fichier2"
    # traitement .../...
    File3="/chemin3/chemin33/fichier3"

    echo $File1 $File2 $File3

    # "fin script2.sh"
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

Discussions similaires

  1. Script interessant , qui envoi un mail a tout vos contact msn
    Par kekou dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 18/04/2008, 03h28
  2. Un script sous WinXP qui envoie un mail ?
    Par MatMeuh dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/02/2007, 15h14
  3. Réponses: 2
    Dernier message: 03/05/2006, 00h12
  4. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26

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