#!/usr/local/bin/zsh
#################################################################
# This script checks 3510 status #
#################################################################
EMAILADDR="sysadmin@software.umn.edu"
FAILSTAT="0"
FAILSTAT1="0"
for DISKS in `/usr/local/sccli/sbin/sccli -l|/usr/local/bin/cut -d" " -f1 -`
do
SCCLI=`/usr/local/sccli/sbin/sccli $DISKS show logical-drives 2>&1 > /tmp/lds.out`
LDS=`/usr/local/bin/cat /tmp/lds.out 2>&1|grep ld|grep -v Good`
if [ $? = 1 ]; then
FAILSTAT="0"
else
FAILSTAT1="1"
fi
SCCLI=`/usr/local/sccli/sbin/sccli $DISKS show enclosure-status 2>&1 > /tmp/sccli.out`
for TESTS in Topology Fan PS Temp Voltage DiskSlot
do
CHECK=`/usr/local/bin/cat /tmp/sccli.out 2>&1|grep $TESTS|grep -v OK`
if [ $? = 1 ]; then
FAILSTAT="0"
else
FAILSTAT1="1"
fi
done
if [ $FAILSTAT1 = 1 ]; then
MERGE=`/usr/local/bin/cat /tmp/sccli.out>/tmp/report.out`
MERGE=`echo>>/tmp/report.out`
MERGE=`/usr/local/bin/cat /tmp/lds.out>>/tmp/report.out`
SYSTEM=`hostname`
SUBJECTLINE="StoreEdge Error -- HOST: $SYSTEM DISK: $DISKS"
/bin/mailx -s $SUBJECTLINE $EMAILADDR < /tmp/report.out
fi
done
exit
Wednesday, January 24, 2007
Script to Check Solaris DiskSuite States
This Kourne shell script will check for any errors on metadevices with Disksuite on Solaris.
#!/bin/ksh
#########################################################################
# check_disks - check metadevices for errors and alert the user. #
# USAGE: check_disks [ -m (address) ] #
#########################################################################
TZ=CST5CDT
SUBJECT="MetaDisk Errors on `uname -n`"
GREP_CMD="/bin/egrep"
GREP_ARG="-s"
METASTAT_CMD=/usr/opt/SUNWmd/sbin/metastat
METADB_CMD=/usr/opt/SUNWmd/sbin/metadb
DISKSUITE_PRESENT=1
MAIL_OUTPUT=''
MAIL_RECIP=''
DEFAULT_MAIL_RECIP=''
OUTPUT_MSG=""
RESULT=''
OUTPUT_CODE=0
#########################################################################
# FUNCTION DEFINITIONS #
#########################################################################
function error_out {
RETURN_CODE=$2
ERROR_MSG=$1
print - $ERROR_MSG
exit $RETURN_CODE
}
#########################################################################
# MAIN PROGRAM #
#########################################################################
while getopts :m: c
do
case $c in
m ) MAIL_OUTPUT="YES" # any non-null string will do
MAIL_RECIP=$OPTARG
if [[ -z $MAIL_RECIP ]]
then
MAIL_RECIP=$DEFAULT_MAIL_RECIP
fi
;;
?) error_out "Usage: check_disks [ -m mail_addr ]" 1
;;
esac
done
if [ ! -x $GREP_CMD ]
then
GREP_CMD="/usr/xpg4/bin/egrep"
fi
if [ ! -x $GREP_CMD ]
then
print "ERROR: egrep not executable or not found"
exit 1
fi
PATH=$PATH:/usr/sbin
METASTAT_BIN=$(/bin/which metastat)
if [ ! -x $METASTAT_CMD ]
then
if [ -x $METASTAT_BIN ]
then
METASTAT_CMD=$METASTAT_BIN
DISKSUITE_PRESENT=1
else
DISKSUITE_PRESENT=0
fi
fi
METADB_BIN=$(/bin/which metadb)
if [ ! -x $METADB_CMD ]
then
if [ -x $METADB_BIN ]
then
METADB_CMD=$METADB_BIN
DISKSUITE_PRESENT=1
else
DISKSUITE_PRESENT=0
fi
fi
if [[ $DISKSUITE_PRESENT -eq 0 ]]
then
error_out "DiskSuite has been found." 3
fi
#################################################################
# DISKSUITE SECTION #
#################################################################
if [ $DISKSUITE_PRESENT -ne 0 ]
then
$METASTAT_CMD | $GREP_CMD $GREP_ARG aint
if [ $? -eq 0 ]
then
OUTPUT_MSG="${OUTPUT_MSG}Disk requires maintenance on `uname -n`\n"
fi
$METASTAT_CMD | $GREP_CMD $GREP_ARG "In use"
if [ $? -eq 0 ]
then
OUTPUT_MSG="${OUTPUT_MSG}Disk hot spared on `uname -n`"
fi
$METADB_CMD | $GREP_CMD $GREP_ARG "[A-Z]"
if [ $? -eq 0 ]
then
OUTPUT_MSG="${OUTPUT_MSG}Metadb problems on `uname -n`\n"
fi
fi
#################################################################
# OUTPUT SECTION #
#################################################################
if [[ ! -z $MAIL_OUTPUT ]]
then
if [[ ! -z "$OUTPUT_MSG" && ! -z $MAIL_RECIP ]]
then
print $OUTPUT_MSG | mailx -s "$SUBJECT" $MAIL_RECIP
OUTPUT_CODE=-1
fi
else
if [[ ! -z "$OUTPUT_MSG" ]] # or else just print on stdout
then
print $OUTPUT_MSG
OUTPUT_CODE=-1
fi
fi
return $OUTPUT_CODE
Subscribe to:
Comments (Atom)
