L’altro giorno un mio amico mi ha chiesto come poter essere avvisato tramite e-mail se lo stato del raid di un suo server si fosse danneggiato, o quanto ci possa mettere a finire la fase di recovery.
La mia risposta è stata di creare uno script bash, che schedulato tramite crontab, tenga sotto controllo (secondo le tempistiche da lui preferite) il file /proc/mdstat.
La sua risposta è stata “bello….ma come si fa?”.
Detto fatto!!
Il file in oggetto è un file in cui viene memorizzato lo stato dell’array del raid, ne viene indicato il tipo oltre ai dischi / partizioni che ne fanno parte; Lo stato è semplice ogni disco viene indicato con uno stato “U” che ne indica che è sincronizzato, nel caso di fail la lettere viene sostituito con un semplice “_”, mentre in fase di recovering avremo la percentuale di conpletamento e il tempo stimato.
Il mio consiglio è stato quello di cercare le parole “jolly” ovvero failed e recovery, il risultato è stato questo:
#!/bin/bash
##################################
# #
# Raid Monitoring - e-mail alert #
# #
# xanio script controll #
##################################
#
#
## EDIT FOR SETTING ##
SUBJECT="RAID Status"
EMAIL="mail@test.it"
function usage
{
echo "usage: raid_check -f file | -h"
}
function check
{
cat $filename | grep "(F)" 1>/dev/null && if [ $? -eq 0 ] ; then /bin/mail -s "$SUBJECT" "$EMAIL" "Raid Status:: FAILED"; fi
cat $filename | grep "recovery" 1>/dev/null && if [ $? -eq 0 ] ; then /bin/mail -s "$SUBJECT" "$EMAIL" "Raid Status:: Recovering $(cat $filename)" ; fi
}
##### Main
while [ "$1" != "" ]; do
case $1 in
-f | --file ) shift
filename=$1
check
exit
;;
-h | --help ) usage
exit
;;
* ) usage
exit 1
esac
shift
done
##### EOF
happy hacking!!