| 12
 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
 
 | #!/bin/bash
# Auteur : Anonyme - cf http://www.debian-administration.org/articles/143 #
# Licence : GPL                                                           #
# 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
 
	percent=$( echo "$line" | awk -F@ '{print$5}' | tr -d '%' )
	partition=$( echo "$line" | awk -F@ '{print$6}')
	disp=$( echo "$line" | awk -F@ '{print$4}')
 
	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