Forum Programmation.shell Crontab et Exim4 -v, pas de mail envoyé en crontab

Posté par  .
Étiquettes : aucune
0
7
mai
2008
Bonjour,

J'ai un petit souci avec un script shell qui test le ping d'un serveur, si pas de réponse, j'envoie un mail avec exim4 et je créé un fichier erreur (afin de pas recevoir le mail à chaque execution du cron) fichier que je détruit ensuite quand cela refonctionne ...
Il fonctionne tres bien quand je l'execute en directe ... en revanche en tache cron il ne fonctionne pas completement, le fichier est bien créé et supprimé en revanche le mail ne part jamais ...

Si vous avez une idée du pourquoi du comment ...

Voici le script :

#!/bin/sh
cd /root/test
machine="www.monsite.com"
ping="ping -c 1 -q $machine"
fichier="erreur"
if $ping | grep -E "min/avg/max" > /dev/null
then if [ -e "$fichier" ];
then rm -f "$fichier"
fi
else
if [ -e "$fichier" ];
then cat /dev/null
else
cat /dev/null > "$fichier";
exim4 -v 0606060606@orange.fr < mail.txt;
fi
fi


Et l'appel en cron :

*/1 * * * * /root/test/test.sh > /root/test/log

Le fichier de log est toujours vide ...

Si quelqu'un a une idée ... merci d'avance
  • # erreur ?

    Posté par  . Évalué à 2.

    si j'ai bien remis les retours à la ligne là ou il faut, ton code ne marchera JAMAIS

    #!/bin/sh
    cd /root/test

    machine="www.monsite.com"

    ping="ping -c 1 -q $machine"

    fichier="erreur"

    pas de soucis jusque là



    if $ping | grep -E "min/avg/max" > /dev/null
    ca chez moi ca me renvoi toujours un truc, que ca ping ou pas donc c'est toujours valide



    then if [ -e "$fichier" ];
    then rm -f "$fichier"
    fi

    ce code sera toujours executer car le if $ping est toujours valide
    du coup le code qui reste ne sera jamais executé


    else
    if [ -e "$fichier" ];
    then cat /dev/null
    else
    cat /dev/null > "$fichier";
    exim4 -v 0606060606@orange.fr < mail.txt;
    fi
    fi
    • [^] # Re: erreur ?

      Posté par  (site web personnel) . Évalué à 2.

      Bonjour,
      Plusieurs choses par ailleurs :

      - Les variables d'environnement sont réduites dans le contexte d'un cron dont exporter un path n'est pas une mauvaise idée même si l'usage est plutôt d'invoquer des commandes par le chemin absolue.

      - En redirigeant la sortie d'erreur vers ton fichier de log, tu devrais avoir quelque chose de plus verbeux (tu sais les histoires de 2>&1)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.