#!/bin/sh
#
# file: raidmonitor
# Script zur Ueberpruefung ob Raid laeuft
# Getested mit Gentoo-Linux
# Erstellt von Joerg Bornkessel 20/02/2004
# Leicht geaendert von Gerold Penz 2004-01-24
# Eintrag in /etc/crontab vornehmen , i.E.
# 0 	0-23/1	* 	* 	* 	root 	/sbin/raidmonitor 2>&1 > /dev/null
# und
#
# Zum starten beim Systemstart:
# /sbin/raidmonitor
# in /etc/conf.d/local.start eintragen.
#

MAILTO="gerold@gp-server"
SENDMAILCMD="/usr/sbin/sendmail -t -oi"
RAIDHOST=`/bin/hostname`
HOST=`/bin/dnsdomainname`
TMPFILE="/tmp/$RANDOM.tmp"
START_LOG="/tmp/$RANDOM.log"
ZEIT=`date +%R%n%d-%m-%Y`

#### Farbzuweisung, Dank an CyBerian @ http://forums.gentoo.org
#
xecho() #(text, x, y, fgColor, bold)
{
	#set position if given
	if [ $2 -ne -1 ] ; then
		if [ $3 -ne -1 ] ; then
			tput cup $3 $2
		fi
	fi
	#set color if valid color is given
	if [ "`echo $4|cut -c-6`" = "bright" ] ; then
		color=`echo $4|cut -c7-`
		pre_color_code="\033[01;3"
	else
		pre_color_code="\033[00;3"
		color=$4
	fi
	case "$color" in
#	black) colorcode="${pre_color_code}0m";;
	red) colorcode="${pre_color_code}1m";;
#	green) colorcode="${pre_color_code}2m";;
#	yellow) colorcode="${pre_color_code}3m";;
#	blue) colorcode="${pre_color_code}4m";;
#	lila) colorcode="${pre_color_code}5m";;
	cyan) colorcode="${pre_color_code}6m";;
#	grey) colorcode="${pre_color_code}7m";;
#	*) colorcode="";;
	esac
	#print out the given string
	printf "${colorcode}$1\033[00;00m"
	#return and restore variables
	return
}
#
### Ende Farbzuweisung, Ende Dank an ...


# Function zur Mail Benachrichtigung
writemail()
{
	echo "To: $MAILTO " > $TMPFILE
	echo "SUBJECT: *** ALARM! RAID FEHLER *** " >> $TMPFILE
	echo "X-Priority: 1 (Highest)" >> $TMPFILE
	echo "Reply-To: root@$HOST" >> $TMPFILE
	echo "Errors-To: root@$HOST" >> $TMPFILE
	echo "" >> $TMPFILE
	echo "RAID Fehler auf $RAIDHOST" >> $TMPFILE
	echo "$ZEIT" >> $TMPFILE
	cat $TMPFILE | $SENDMAILCMD
	rm -f $TMPFILE
}

# Ueberpruefung mit grep auf _
#
grep '[\[U]_' /proc/mdstat >$START_LOG
LOG="`wc -l <$START_LOG`"
if [ $LOG -gt 0 ] ; then
	#xecho "  *** WARNUNG !!! RAID DO NOT WORK ***" -1 -1 "brightred"
	echo "  *** WARNUNG !!! RAID DO NOT WORK ***"
	echo ""
	logger -t raidmonitor RAID DO NOT WORK --
	writemail
else
	#xecho "  Raid - Status O.K." -1 -1 "brightcyan"
	echo "  Raid - Status O.K."
	echo ""

	# Die folgende Zeile kann kommentiert werden
	# um die syslog nicht zu sehr zu belasten.
	logger -t raidmonitor raid o.k. --
fi
rm -f $START_LOG
#Ende farbe & grep & syslog & mailversand

exit 0
