#!/bin/bash DISK=${0/*smart-by-id_/} 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 ${OP[1]} | sed -e 's/-/_/g'` OL=`echo ${OP[1]} | sed -e 's/_/ /g'` echo ${ON}.label ${OL} echo ${ON}.draw LINE2 | sed -e 's/-/_/g' echo ${ON}.critical ${OP[5]}: | sed -e 's/-/_/g' 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 | grep 0x | awk '{ print $2.".value",$4; }' | sed -e 's/-/_/g' ;; esac