From 214407caa07f0888163cad47c537e85f1c8e50ee Mon Sep 17 00:00:00 2001 From: Stefan Seidel Date: Wed, 29 Jun 2011 18:36:13 +0200 Subject: [PATCH] Initial version --- plugins/other/smart-by-id_ | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 plugins/other/smart-by-id_ diff --git a/plugins/other/smart-by-id_ b/plugins/other/smart-by-id_ new file mode 100755 index 00000000..f6ddb4c3 --- /dev/null +++ b/plugins/other/smart-by-id_ @@ -0,0 +1,50 @@ +#!/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 +