#!/bin/bash
VERSION='0.1'
# clientlaunch.d/smartmon.cfg
#[smart]
# ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg
# CMD $XYMONCLIENTHOME/ext/smartmon.bash
# LOGFILE $XYMONCLIENTHOME/logs/smartmon.log
# INTERVAL 5m
# IMPORTANT::
# yum install smartmontools
# Add the following to sudoers file (visudo):
# * Defaults:xymon !requiretty
# * xymon ALL=NOPASSWD:/usr/sbin/smartctl
#DEBUG# echo "bb=[$BB]"
#DEBUG# echo "bbdisp=[$BBDISP]"
NL="
"
DASHES="
"
DASH="
"
COLOR="clear"
COLUMN="smart"
MSG="No S.M.A.R.T. device detected."
VERMSG="
Version: ${VERSION}"
RAID=""
SMARTCTL="/usr/sbin/smartctl"
SUDO="/usr/bin/sudo"
DATE=$(date)
EXTRA='OK'
MEGA='sudo /opt/MegaRAID/MegaCli/MegaCli64 -ldinfo -lall -a0'
driveCnt=$(${MEGA} | grep Drives | awk -F':' '{print $2}')
MSGdetail=''
shopt -s lastpipe
COLOR='green'
MSG=''
dev="/dev/sda"
kind="megaraid"
((cnt=0))
# if no devices, leave color clear
while ((driveCnt > cnt))
do
# smartctl -a -d megaraid,N /dev/sda (N is drive number sda is device)
statusResult=$(${SUDO} ${SMARTCTL} -a -d ${kind},${cnt} ${dev} | grep 'SMART Health Status')
# Cd/DVD devices are Unavailable -- so skip them
skip=$(echo ${statusResult} | grep 'SMART support is: Unavailable')
if [[ 'X' == "X${skip}" ]]
then
status=$(echo "${statusResult}" | grep 'OK' | wc -l)
# anytime we get a problem -- make color red
if (( 0 == status ))
then
COLOR='red'
EXTRA='Failure!'
fi
summary=$(${SUDO} ${SMARTCTL} -d ${kind},${cnt} -i ${dev})
MSG="${MSG}${NL}${dev} drive:${cnt} ${DASH}${statusResult}
${summary}${DASHES}"
detail=$(${SUDO} ${SMARTCTL} -d ${kind},${cnt} --all ${dev})
MSGdetail="${MSGdetail}${NL}${dev} drive:${cnt} ${DASH}${detail}${DASHES}"
fi
((cnt = cnt + 1))
done
${BB} ${BBDISP} "status ${MACHINE}.${COLUMN} ${COLOR} ${DATE} ${EXTRA} Device Info
${MSG} Device details
${MSGdetail}${NL}${VERMSG}"
#DEBUG# tmp="$?"
#DEBUG# echo "error code: $tmp"