Bonjour à tous,
Voici un petit script qui me permet de pinguer une machine. Quand celle-ci ne répond plus, je me fais envoyer un mail. De plus, je crée un fichier pour ne pas recevoir un mail toute les minutes. Ca, ça fonctionne au poil. Mon problème est que quand la machine répond à nouveau, je n'ai pas d'info. Je suis obligé d'effacer à la mano mon fichier de test.
Je cherche donc à compléter mon script pour que dès que la machine répond à nouveau je reçoive un mail m'indiquant le changement d'état et que le fichier test soit effacé.
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
# Inversion de tests
Posté par Toto . Évalué à 2.
if [ $count -eq 0 ]; then
if [ ! -f $TOUCH ]; then
echo "10 ne répond plus au ping depuis $(date)" | mail -s "$SUBJECT" $EMAILID
touch $TOUCH
fi
else
rm $TOUCH 2>/dev/null
fi
Sinon, un truc, mets plutôt TOUCH=/var/lock/Ping_host ca sera plus parlant et evitera de supprimer ton fichier test par erreur ;)
[^] # Re: Inversion de tests
Posté par Toto . Évalué à 3.
Ca donnerait plutot :
if [ $count -eq 0 ]; then
if [ ! -f $TOUCH ]; then
echo "10 ne répond plus au ping depuis $(date)" | mail -s "$SUBJECT" $EMAILID
touch $TOUCH
fi
else
if [ -f $TOUCH ]; then
rm $TOUCH 2>/dev/null
echo "10 répond à nouveau au ping : $(date)" | mail -s "$SUBJECT"
fi
fi
[^] # Re: Inversion de tests
Posté par choubaka . Évalué à 1.
Cordialement.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.