#!/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"