--- /usr/sbin/healthd.old 2009-09-29 09:20:04.000000000 +0200 +++ /usr/sbin/healthd 2009-11-10 16:23:47.000000000 +0100 @@ -12,22 +12,26 @@ sensors="/usr/bin/sensors" -while [ $# -gt 0 ] ; do +while [ $# -gt 0 ] +do case "${1}" in - -c ) cmd="${2}" ;; - -m ) addr="${2}" ;; - -s ) slp="${2}" ;; - * ) return 1 ;; + -c ) cmd="${2}"; shift 2 ;; + -m ) addr="${2}"; shift 2 ;; + -s ) slp="${2}"; shift 2 ;; + * ) shift 1 ;; esac - shift 2 done -[ -n "${cmd}" ] && [ -n "$( which -- "${cmd%% *}" )" ] || \ - [ -n "${addr}" ] || return 1 +if ! which -- "${cmd%% *}" || + [ -z "${addr}" ] +then + exit 1 +fi [ "${slp}" -ge 2 ] || slp=600 -while true ; do +while : +do sleep 15 message="$( $sensors )" case "$message" in @@ -36,12 +40,10 @@ * ) 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} & + echo "$message" | mail -s \ + "Sensors ALARM detected at host: $( hostname )" \ + "${addr}" + ${cmd} & sleep ${slp} fi -done & +done