Bonjour à tous,
J'ai bricolé un petit script qui me permet de tester (un ping via crontab), que ma machine n'est pas plantée. S'il y a plantage, j'envois un mail. Mon petit script fonctionne parfaitement. Le problème est que quand la machine ne répond plus au ping, j'ai un mail d'alerte toute les minutes (temps du test de la crontab).
Donc je souhaiterais que mon script n'envois plus de mail tant que la machine ne répond pas. Par contre, quand la machine répond à nouveau, j'envoie un mail pour dire que tout est rentré dans l'ordre.
Merci pour votre aide.
# fichier
Posté par left . Évalué à 2.
[^] # Re: fichier
Posté par choubaka . Évalué à 1.
C'est ce que je fais actuellement. Par contre, je ne vois pas bien comment faire pour tester l'existance du fichier test. De plus, si le fichier test existe, je n'envoie plus de mail mais dès que le problème est réglé, je veux être informé par mail que le ping est à nouveau OK.
Merci pour votre aide.
Voilà mon script:
#!/bin/bash
#
# Fichier pour éviter les répétitions.
TOUCH=/tmp/test
# déclaration IP
HOSTS="192.168.0.10"
# nombre de ping.
COUNT="3"
# paramètres email.
SUBJECT="10 est en vrac!"
EMAILID="mon_mail"
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ ! -f $TOUCH ]; then
if [ $count -eq 0 ]; then
echo "10 ne répond plus au ping depuis $(date)" | mail -s "$SUBJECT" $EMAILID
touch $TOUCH
fi
fi
done
# Utiliser un fichier d'état
Posté par Étienne . Évalué à 1.
etat=`cat /tmp/etatmachine`
etatcourant=`testmachine`
if [ "$etatcourant" != "$etat" ]
then
envoimail "$etatcourant"
fi
echo "$etatcourant" > /tmp/etatmachine
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.