Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.shell

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

Posté par xenetis (page perso, ) le 07 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

> Lire le message (2 commentaires, moyenne: 2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

erreur ?

Posté par NeoX () le 07/05/2008 à 19:55. (lien). É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

--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
  • [^]Re: erreur ?

    Posté par d-jo (page perso, ) le 10/05/2008 à 21:12. (lien). É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)

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell