diff --git a/evolinux-base/files/check_hpraid.cron.sh b/evolinux-base/files/check_hpraid.cron.sh index d8330f44..442b53ba 100644 --- a/evolinux-base/files/check_hpraid.cron.sh +++ b/evolinux-base/files/check_hpraid.cron.sh @@ -10,6 +10,18 @@ awk=$(command -v awk) check_hpraid="/usr/local/lib/nagios/plugins/check_hpraid -v -p" check_hpraid_output=$(mktemp -p $TMPDIR check_hpraid_XXX) check_hpraid_last="$TMPDIR/check_hpraid_last" +# set to false to use cron output (MAILTO) +# otherwise send output with mail command +use_mail=true +body=$(mktemp --tmpdir=/tmp check_hpraid_XXX) +clientmail=$(grep EVOMAINTMAIL /etc/evomaintenance.cf | cut -d'=' -f2) +hostname=$(grep HOSTNAME /etc/evomaintenance.cf | cut -d'=' -f2) +hostname=${hostname%%.evolix.net} +# If hostname is composed with -, remove the first part. +if [[ $hostname =~ "-" ]]; then + hostname=$(echo "$hostname" | cut -d'-' -f2-) +fi + trap trapFunc EXIT ERR testDeps() { @@ -25,6 +37,23 @@ main() { else error=false fi + + # If check_hpraid returned error, display output, save status and + # exit + if $error; then + cp "$check_hpraid_output" "$check_hpraid_last" + if $use_mail; then + mail -s "RAID error on $hostname" "$clientmail" \ + <<< "$check_hpraid_output" + else + cat "$check_hpraid_output" + fi + exit 1 + else + cp "$check_hpraid_output" $check_hpraid_last + exit 0 + fi + if [ ! -f $check_hpraid_last ]; then cp "$check_hpraid_output" $check_hpraid_last fi @@ -34,32 +63,31 @@ main() { md5_now=$(md5sum "$check_hpraid_output" | awk '{print $1}') md5_last=$(md5sum $check_hpraid_last | awk '{print $1}') if [[ "$md5_now" != "$md5_last" ]]; then - cat << EOT - Different RAID state detected. - Was: - $(cat $check_hpraid_last) - Is now: - $(cat $check_hpraid_output) + cat << EOT > "$body" +Different RAID state detected. + +Was: +$(sed 's/^/> /g' "$check_hpraid_last") + +########################### + +Is now: +$(sed 's/^/> /g' "$check_hpraid_output") EOT - cp "$check_hpraid_output" $check_hpraid_last + if $use_mail; then + mail -s "RAID status is different on $hostname" \ + "$clientmail" <<< "$body" + else + cat "$body" + fi + cp "$check_hpraid_output" "$check_hpraid_last" exit 1 fi - - # If check_hpraid returned error, display output, save status and - # exit - if $error; then - cp "$check_hpraid_output" $check_hpraid_last - cat "$check_hpraid_output" - exit 1 - else - cp "$check_hpraid_output" $check_hpraid_last - exit 0 - fi } trapFunc() { - rm "$check_hpraid_output" + rm "$check_hpraid_output" "$body" } testDeps