#!/bin/bash

DISK=${0/*smart-by-id_/}
SMARTCTL="`which smartctl | head -1` $SMARTOPTS"

echo "# $DISK"

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

case $1 in
config)
    echo 'graph_title S.M.A.R.T values for drive '`readlink -f /dev/disk/by-id/$DISK`
    echo 'graph_vlabel Attribute S.M.A.R.T value'
    echo 'graph_args --base 1000 --lower-limit 0'
    echo 'graph_category disk'
    echo 'graph_info This graph shows the value of all S.M.A.R.T attributes of drive '`$SMARTCTL -i /dev/disk/by-id/$DISK | grep -Ei 'model|serial|firmware' | sed -re 's/.+?: +//gm' | tr '\n' ' '`
    echo 'smartctl_exit_status.label smartctl exit value'
    echo 'smartctl_exit_status.draw LINE2'
    echo 'smartctl_exit_class.label smartctl exit status'
    echo 'smartctl_exit_class.draw AREA'
    echo 'smartctl_exit_class.warning :0'
    echo 'smartctl_exit_class.critical :1'

    $SMARTCTL -A /dev/disk/by-id/$DISK | grep 0x | while read
    do
        OP=($REPLY)
        ON=`echo -n ${OP[1]} | tr -c '[A-z0-9]' '_'`
        OL=`echo -n ${OP[1]} | tr '_' ' '`
        echo ${ON}.label ${OL}
        echo ${ON}.draw LINE2
        echo ${ON}.critical ${OP[5]}:
    done 
    ;;
suggest)
    ls -1 /dev/disk/by-id/scsi-* | grep -v part | grep -o scsi.*
    ;;
"")
    $SMARTCTL -a /dev/disk/by-id/$DISK &> /dev/null
    SES=$?
    echo "smartctl_exit_status.value $SES"
    if [ $SES -gt 0 ]
    then
        if [ $((SES & 7)) -gt 0 ] ; then exit 1 ; fi
        if [ $((SES & 24)) -gt 0 ] ; then SES=2 ; fi
        if [ $((SES & 224)) -gt 0 ] ; then SES=1 ; fi
    fi
    echo "smartctl_exit_class.value $SES"
    $SMARTCTL -A /dev/disk/by-id/$DISK | awk '/0x/ { gsub(/[^a-zA-Z0-9]/,"_",$2); print $2.".value",$4; }'
    ;;
esac

#exit 0