1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #!/bin/bash
data_directory=/var/lib/wakewatcher
computer=nomdordi
mail_sent="$data_directory"/"$computer"
mail_body_file=$(mktemp)
mail_subject="[Message automatique] Alerte:$computer $(date) "
mailing_list="adresse@bla.com"
ping_test=$( ping -c3 -f $computer | grep " 0% packet loss" )
file_missing_error="Erreur : $mail_sent n'existe pas"
(! test -f $mail_sent ) && echo $file_missing_error && exit
# Ecriture du contenu du message dans un fichier temporaire
write_mail_body()
{
cat << EOF >> $mail_body_file
Bonjour.
L'ordinateur $computer ne repond pas.
Il se peut qu'il soit eteint.
Il se peut egalement qu'il ne reponde pas a cause d'une defaillance du reseau.
Cordialement.
EOF
}
# si l'on ne recupere rien, c'est que le ping n'a pas eu lieu correctement, et donc que l'ordi est eteint
if [ -z "$ping_test" ] ; then
# si l'on a deja envoye un mail, pas besoin d'en renvoyer un
if [ $(cat $mail_sent) = "1" ] ; then
exit
# sinon on l'envoie
else
write_mail_body
#sans oublier de signaler qu'on l'a envoye dans le fichier
( mail -s "$mail_subject" $mailing_list < $mail_body_file ) && echo 1 > $mail_sent
fi
else
#Ecriture dans le fichier qu'on n'a pas envoye de mail, et pour cause, l'ordinateur repond
( test -d $src_directory ) && echo 0 > $mail_sent
fi |
Partager