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

  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.

  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.

  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"

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