#!/bin/bash

if [ -z $SPOOLDIR ]; then
    SPOOLDIR=/var/spool/statusd
fi

STF=$SPOOLDIR/smart.status

function smarts()
{
    for drv in /sys/block/sd*; do
	drive=`basename $drv`
	smartctl -n never -a /dev/$drive >/dev/null 2>&1
	xc=$?
	FAIL=0
	for mask in 8 16 32 128; do
		xca=$(($xc & $mask))
		if [ $xca -gt 0 ]; then
			FAIL=1
		fi
	done
	if [ "$FAIL" == "1" ]; then
		echo -n "[$drive:$xc]"
	fi
    done
}

if [ "$1" != "cron" -a -f $STF ]; then
    SMTS=`cat $STF`
else
    SMTS=`smarts`
    echo -n "$SMTS" >$STF
fi
if [ "x$SMTS" != "x" ]; then
	echo "$SMTS"
	exit 1
else
	echo "OK"
	exit 0
fi
