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