Capita a tutti i server che abbiamo in giro per il mondo, che per qualche motivo lo spazio disco raggiunga il 100%. Soprattutto se i server sono sottodimensionati dal punto di vista della capienza dell’HDD.
Creiamo uno script sh e lo chiamiamo controllaSpazio.sh e gli incolliamo il seguente codice:
#!/bin/bash #admin email account ADMIN="tuaemail@blablabla.com" # set usage alert threshold THRESHOLD=75 #hostname HOSTNAME=$(hostname) #mail client MAIL=/usr/bin/mail # store all disk info here EMAIL="" for line in $(df -hP | egrep '^/dev/' | awk '{ print $6 "_:_" $5 }') do part=$(echo "$line" | awk -F"_:_" '{ print $1 }') part_usage=$(echo "$line" | awk -F"_:_" '{ print $2 }' | cut -d'%' -f1 ) if [ $part_usage -ge $THRESHOLD -a -z "$EMAIL" ]; then EMAIL="$(date): Running out of diskspace on $HOSTNAME\n" EMAIL="$EMAIL\n$part ($part_usage%) >= (Threshold = $THRESHOLD%)" elif [ $part_usage -ge $THRESHOLD ]; then EMAIL="$EMAIL\n$part ($part_usage%) >= (Threshold = $THRESHOLD%)" fi done if [ -n "$EMAIL" ]; then echo -e "$EMAIL" | $MAIL -s "Spazio disco in esaurimento su $HOSTNAME" "$ADMIN" else echo "Spazio disco sufficiente. Tutte le partizioni sono sotto la soglia del "$THRESHOLD"%" fi
Eseguire questo file all’interno di un cronjob giornaliero per essere avvertiti tempestivamente quando lo spazio sta per finire. Nel nostro caso quando lo spazio disco raggiunge il 75% della capienza come si legge da questo parametro: “THRESHOLD=75”
Fate una prova mettendo la soglia a 0% e verificare che la mail arrivi al vostro account. Spesso capita che il sistema per l’invio delle email non sia installato, ottenendo questo errore in console:
controllaSpazio.sh: 37: controllaSpazio.sh: /usr/bin/mail: not found
Quindi installare l’utilita’ per l’invio dell’email:
sudo apt install mailutils
Durante l’installazione un messaggio di Postfix Configuration chiede di scegliere un profilo generale di configurazione, noi scegliamo “Sito Internet”. Seguiamo le istruzioni.
Eseguiamo il comando
sh controllaSpazio.sh
con il THRESHOLD=0 per verificare che la mail arrivi nella vostra posta elettronica.