Programmation.shell : Crontab et Exim4 -v, pas de mail envoyé en crontab
Posté par xenetis (page perso, ) le 07 mai 2008
0
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
> Lire le message (2 commentaires, moyenne: 2).
Vous avez demandé le commentaire #929800.



erreur ?
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/nullca 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
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
[ Répondre ]
[^]Re: erreur ?
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)
[ Répondre ]