#!/bin/bash

#
# /usr/bin/healthd
#

. /etc/healthd.conf

cmd="${ALARM_CMD}"
addr="${ADMIN_EMAIL}"
slp="${ALARM_SLEEP}"
sensors="/usr/bin/sensors"


while [ $# -gt 0 ] ; do
	case "${1}" in
		-c ) cmd="${2}" ; shift 2 ;;
		-m ) addr="${2}" ; shift 2 ;;
		-s ) slp="${2}" ; shift 2 ;;
		*  ) shift 1 ;;
	esac
done

case "${ALARM_RESET}" in
	yes) /usr/bin/sensors > /dev/null
	;;
        no) true
	;;
esac

[ -n "${cmd}" ] && [ -n "$( which -- "${cmd%% *}" )" ] || \
	[ -n "${addr}" ] || exit 1

[ "${slp}" -ge 2 ] || slp=600

while true ; do
	sleep 15
	message="$( $sensors )"
	case "$message" in
		''      ) message='Could not get any sensor values !' ;;
		*ALARM* ) : ;;
		*       ) message='' ;;
	esac
	if [ -n "$message" ]; then
		if [ -n "${addr}" ]; then
			echo "$message" | mail -s \
				"Sensors ALARM detected at host: $( hostname )" \
				"${addr}"
		fi
		[ -z "${cmd}" ] || ${cmd} &
		sleep ${slp}
	fi
done &
