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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| #!/bin/bash
###########################################################################
# #
# Nom : disk-full.bash #
# Version : 0.1 #
# Auteur : Anonyme - cf http://www.debian-administration.org/articles/143 #
# Licence : GPL #
# Objet : regarde l'espace disponible sur les partitions et envoie un mail#
# d'alerte quand la limite est atteinte #
# #
# #
###########################################################################
# Changelog :
# 18/06/08 - ega- utilisation de /var/run pour empecher le double lancement
# 13/08/08 - ega- log ajoutes, exit plutot que return
# 27/08/08 - ega- exclusion de levaluation des partitions nfs dans le df
# 18/09/08 - ega- exclusion de levaluation des disquettes
#
#
# Note : ce script fonctionne en bash pas en sh
# CONSTANTES
HOSTNAME=$(hostname)
DOMAINE="@mondomaine.fr"
myscriptname="HDFullnessCheck"
pidfile="/var/run/$myscriptname.pid"
logfile="/var/log/localscript/$myscriptname.log"
# a adapter :
mailing_list=administrateur$DOMAINE
# pourcentage limite d'occupation du disque
LIMIT=90
mail_body_file=$(mktemp)
log_failure()
{
echo "`date` [echec]" >> $logfile
}
log_success()
{
echo "`date` [succes]" >> $logfile
}
# Ecriture du contenu du message dans un fichier temporaire
write_mail_body()
{
cat << EOF >> $mail_body_file
Bonjour.
La partition $partition sur $HOSTNAME necessite votre intervention.
Elle est remplie a $percent % : il reste $disp
Cordialement.
EOF
}
# Ecriture du contenu du message dans un fichier temporaire
write_error_body()
{
cat << EOF >> $mail_body_file
Bonjour.
$pidfile existe. Cela indique que le script ne s'est pas termine correctement.
Cordialement.
EOF
}
# string vide
if [ -z "$pidfile" ]
then
mail_subject="[$HOSTNAME] Alerte : erreur $pidfile"
write_error_body
mail -s "$mail_subject" $mailing_list < $mail_body_file
log_failure
exit 1
fi
# fichier existe
if [ -e "$pidfile" ]
then
mail_subject="[$HOSTNAME] Alerte : erreur $pidfile"
write_error_body
mail -s "$mail_subject" $mailing_list < $mail_body_file
log_failure
exit 1
fi
echo $! > $pidfile
# SCRIPT
# on evite les disquettes, les partages nfs et tout ce qui ne commence pas par /
for line in $( df -Ph -x nfs | grep "^/" | grep -v "^/dev/fd[0-9]" | sed -r "s/ {1,}/@/g" ); do
# echo $line
percent=$( echo "$line" | awk -F@ '{print$5}' | tr -d '%' )
partition=$( echo "$line" | awk -F@ '{print$6}')
disp=$( echo "$line" | awk -F@ '{print$4}')
# echo "$percent $partition $disp"
if [ $percent -ge $LIMIT ]; then
mail_subject="[$HOSTNAME] Alerte : Partition $partition pleine a $percent%"
write_mail_body
mail -s "$mail_subject" $mailing_list < $mail_body_file
fi
done
rm -f $pidfile
log_success
exit 0 |
Partager