#!/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:
Posts (Atom)