Listing 1

#!/bin/ksh
##
## This script checks that the disks in Disksite/Volume Manager
## are all okay and that all devices that are supposed to be 
## mirrored are mirrored.
##
## Author: Andrew Kyle
##

#
# Firstly see if metastat is installed
# and where it can be found.
# 2.6, 7 Installs in /usr/opt/SUNWmd/sbin/metastat
# 8 up, Installs in /usr/sbin/metastat
#
METASTAT=""
if [ -x /usr/opt/SUNWmd/sbin/metastat ]
then
   METASTAT=/usr/opt/SUNWmd/sbin/metastat
else
   if [ -x /usr/sbin/metastat ]
   then
      METASTAT=/usr/sbin/metastat
   fi
fi


#
# If metastat can be found then see if there are
# metadbs configured.
#
if [ "$METASTAT" != "" ]
then
   METASTAT_DATA=`$METASTAT 2>&1`
   #echo I think this server has meta disks to check....
   #check to see if it has been configured with any metadbs
   if [ "`echo "$METASTAT_DATA" | grep 'there are no existing databases'`" = "" ]
   then
      #
      # Check the state of all metadevices
      #
      STATES=`echo "$METASTAT_DATA"| \
              awk '{if($1~/^d/){metadevice=$1}}
                   {if($1~/State/&&$NF!~/Okay/)
                      {print metadevice" "$NF}}'`
      if [ "$STATES" != "" ]
      then
          echo
          echo "The following metadevices are not \"Okay\""
          echo "$STATES"
          echo "Run \"$METASTAT\" to check." 
          echo
      fi
      #
      # Now check all disks are mirrored
      #
      echo "$METASTAT_DATA"|awk -F: 'BEGIN{count=0}{
         if ($0~/Mirror/){
            {FLAG="TRUE"}metadisk=$1}
         if (FLAG=="TRUE" && $0~/Submirror/)
            {count=count+1}
         if ($0~/Pass/){
            {if (count<2){
               print "Metadisk "metadisk" is not mirrored!"}}
            {FLAG="FALSE"}{count=0}}
      }'

      #
      # Check all Hot spares are "Available"
      #
      HSP_STATES=`echo "$METASTAT_DATA"| \
                  awk '{if(NF==5&&$NF=="blocks")
                          {print $1"\t"$2" "$3}}
                       {if(NF==4&&$NF=="blocks"&&$2!="Available")
                          {print $1"\t"$2}}'| \
                  sort -u`
      if [ "$HSP_STATES" != "" ]
      then
         echo
         echo "The following hot spares are in a state other then \"Available\":"
         echo "$HSP_STATES"
         echo "Run \"$METASTAT\" to check." 
         echo
      fi
   fi
fi

