Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#!/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
Peut-on adapter ce script, dans le cas ou on voudrai envoyer les messages d'alerte par texto ? Si oui, comment ?, scp