<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>Hobbit client to monitor Solaris RAID devices</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Arial">All,</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I have been using a script called bb-raid.sh for a few years to monitor Solaris meta devices. I then came across a Solaris server using raidctl for hardware raid, so I modified bb-raid.sh to monitor this one as well.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">Here is the code. Feel free to use it as you wish:</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">|\/|</FONT>

<BR><FONT SIZE=2 FACE="Arial">====</FONT>

<BR><FONT SIZE=2 FACE="Arial">#!/bin/sh</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># meta: Sun Enterprise Server check - BB external script test</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  Purpose is to report back to a central server, all Solaris</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####     DiskSuite RAID software faults.</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># version 1.0</FONT>

<BR><FONT SIZE=2 FACE="Arial"># version 2.0 - properly uses $THIS_HOST instead of $MACHINE due to fqdn using</FONT>

<BR><FONT SIZE=2 FACE="Arial">#                 comma in name</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               removed all direct program calls in favor of env vars in bbsys.*</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               changed /tmp to $BBTMP</FONT>

<BR><FONT SIZE=2 FACE="Arial">#                       meta to $TEST</FONT>

<BR><FONT SIZE=2 FACE="Arial">#                       $THIS_HOST to $MACHINE</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               removed code that checked for the existance of "meta"</FONT>

<BR><FONT SIZE=2 FACE="Arial">#                 after the server name in bb-hosts</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               moved comment explaining purpose of script to start of code</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               caused output of metadb, metastat, and metahs to be displayed</FONT>

<BR><FONT SIZE=2 FACE="Arial">#                 on the web page</FONT>

<BR><FONT SIZE=2 FACE="Arial"># version 2.1 - Warns if default values are not used</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               Applied changes by Todd Jimenez</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               - created get_header and get_footer functions</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               - set summary value</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               - added &red to red alerts</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               - added &yellow to yellow alerts</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               restored functionality to check for the existence of "meta"</FONT>

<BR><FONT SIZE=2 FACE="Arial">#                 after the server name in bb-hosts, but now optional</FONT>

<BR><FONT SIZE=2 FACE="Arial"># version 2.2 - Change status to &yellow when disk is resyncing.</FONT>

<BR><FONT SIZE=2 FACE="Arial"># version 2.3 - Added code to check for raidctl command and perfrom raid checks</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               using that if it's there.</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               Using this version REQUIRES sudo !</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               raidctl(1m) on Solaris can only be run as root. Sudo is a</FONT>

<BR><FONT SIZE=2 FACE="Arial">#               nice workaround.</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># BIG BROTHER / XXXXXXXXXXXXXXXX status</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Written by Galen Johnson</FONT>

<BR><FONT SIZE=2 FACE="Arial">#  on October 25, 2000</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Inspired by a module of the perl clone of BB written</FONT>

<BR><FONT SIZE=2 FACE="Arial"># by Charles Hall in August 1998</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Based on code found in the DiskSuite manual</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># 2.0 Updates by Mike Arnold <mike at razorsedge dot org></FONT>

<BR><FONT SIZE=2 FACE="Arial">#  on September 27, 2001</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># 2.1 Updates by Mike Arnold <mike at razorsedge dot org></FONT>

<BR><FONT SIZE=2 FACE="Arial">#  on November 23, 2001</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># 2.2 Updates by Martin Ward <martin dot ward at colt dot net></FONT>

<BR><FONT SIZE=2 FACE="Arial">#  on Monday 19th May 2008</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># 2.3 Updates by Martin Ward <martin dot ward at colt dot net></FONT>

<BR><FONT SIZE=2 FACE="Arial">#  on Monday 19th June 2008</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">########################################</FONT>

<BR><FONT SIZE=2 FACE="Arial"># NOTE</FONT>

<BR><FONT SIZE=2 FACE="Arial"># This has been tested with BB 1.8c and Hobbit 4.2.0</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Tested on :</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   Sun 220R, 420R, E250/450, E4500</FONT>

<BR><FONT SIZE=2 FACE="Arial">########################################</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">########################################</FONT>

<BR><FONT SIZE=2 FACE="Arial"># INSTALLATION</FONT>

<BR><FONT SIZE=2 FACE="Arial">#  step 1  - update bb-bbexttab to include this meta</FONT>

<BR><FONT SIZE=2 FACE="Arial">#            (older BB versions update EXT section of the bbdef.sh script)</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial">#  step 2 - copy lines mentioned to bbsys.local (without the #'s)</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial">#  step 3 - if you are using an older version of BB without bb-bbexttab</FONT>

<BR><FONT SIZE=2 FACE="Arial">#             and you don't want this run on every client uncomment</FONT>

<BR><FONT SIZE=2 FACE="Arial">#             CHECK_BB_HOSTS="Y" and add the name of this $TEST to</FONT>

<BR><FONT SIZE=2 FACE="Arial">#             bb-hosts for this client. eg.</FONT>

<BR><FONT SIZE=2 FACE="Arial">#             myserver1.domain.com   # meta</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial">#  step 4 - If you have sudo installed need to use the raidctl control,</FONT>

<BR><FONT SIZE=2 FACE="Arial">#           add the following line into your /etc/sudoers file:</FONT>

<BR><FONT SIZE=2 FACE="Arial"># hobbit          ALL=(root) NOPASSWD:/usr/sbin/raidctl -l</FONT>

<BR><FONT SIZE=2 FACE="Arial">#  step 5 - restart Big Brother</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># NOTE - the TEST variable in the configuration section, this is the name used</FONT>

<BR><FONT SIZE=2 FACE="Arial">#        as the column header.</FONT>

<BR><FONT SIZE=2 FACE="Arial">########################################</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">##################################</FONT>

<BR><FONT SIZE=2 FACE="Arial"># CONFIGURE IT HERE</FONT>

<BR><FONT SIZE=2 FACE="Arial">##################################</FONT>

<BR><FONT SIZE=2 FACE="Arial">TEST="raid"</FONT>

<BR><FONT SIZE=2 FACE="Arial">SCRIPT_VER="bb-raid.sh v2.3"</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">BBPROG="$0"; export BBPROG</FONT>

<BR><FONT SIZE=2 FACE="Arial">DEBUG=0</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Start of lines to put in bbsys.local</FONT>

<BR><FONT SIZE=2 FACE="Arial"># NOTE: MDBIN can be either /usr/sbin or /usr/opt/SUNWmd/sbin</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">MDBIN=/usr/sbin</FONT>

<BR><FONT SIZE=2 FACE="Arial">METADB=${MDBIN}/metadb</FONT>

<BR><FONT SIZE=2 FACE="Arial">METAHS=${MDBIN}/metahs</FONT>

<BR><FONT SIZE=2 FACE="Arial">METASTAT=${MDBIN}/metastat</FONT>

<BR><FONT SIZE=2 FACE="Arial">SUDO=/opt/sfw/bin/sudo</FONT>

<BR><FONT SIZE=2 FACE="Arial">RAIDCTL=/usr/sbin/raidctl</FONT>

<BR><FONT SIZE=2 FACE="Arial">export MDBIN METADB METAHS METASTAT SUDO RAIDCTL</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial"># End of lines to put in bbsys.local</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial"># define colours for graphics</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Comment these out if using older BB versions</FONT>

<BR><FONT SIZE=2 FACE="Arial">RED_PIC="&red"</FONT>

<BR><FONT SIZE=2 FACE="Arial">YELLOW_PIC="&yellow"</FONT>

<BR><FONT SIZE=2 FACE="Arial">GREEN_PIC="&green"</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial"># don't scan through bb-hosts every time</FONT>

<BR><FONT SIZE=2 FACE="Arial"># this is here for older BB versions without bb-bbexttab</FONT>

<BR><FONT SIZE=2 FACE="Arial"># uncomment to activate</FONT>

<BR><FONT SIZE=2 FACE="Arial">#CHECK_BB_HOSTS=Y</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">##################################</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Start of script</FONT>

<BR><FONT SIZE=2 FACE="Arial">##################################</FONT>

<BR><FONT SIZE=2 FACE="Arial">#BBHOME="/home/bb/bb"; export BBHOME</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">if test ! "$BBHOME"</FONT>

<BR><FONT SIZE=2 FACE="Arial">then</FONT>

<BR><FONT SIZE=2 FACE="Arial">        echo "template: BBHOME is not set"</FONT>

<BR><FONT SIZE=2 FACE="Arial">        exit 1</FONT>

<BR><FONT SIZE=2 FACE="Arial">fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">if test ! -d "$BBHOME"</FONT>

<BR><FONT SIZE=2 FACE="Arial">then</FONT>

<BR><FONT SIZE=2 FACE="Arial">        echo "template: BBHOME is invalid"</FONT>

<BR><FONT SIZE=2 FACE="Arial">        exit 1</FONT>

<BR><FONT SIZE=2 FACE="Arial">fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">if test ! "$BBTMP"                      # GET DEFINITIONS IF NEEDED</FONT>

<BR><FONT SIZE=2 FACE="Arial">then</FONT>

<BR><FONT SIZE=2 FACE="Arial">         # echo "*** LOADING BBDEF ***"</FONT>

<BR><FONT SIZE=2 FACE="Arial">        . $BBHOME/etc/bbdef.sh          # INCLUDE STANDARD DEFINITIONS</FONT>

<BR><FONT SIZE=2 FACE="Arial">fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">get_header()</FONT>

<BR><FONT SIZE=2 FACE="Arial">{</FONT>

<BR><FONT SIZE=2 FACE="Arial">  echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">  echo "<FONT SIZE=+2><b>$1</b></FONT> ($2)<BR>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  # If you do not want the header in a bigger font use line below instead</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #echo "<b>$1</b> ($2)"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  # If you want the "Paul Luzzi" look uncomment this section and comment</FONT>

<BR><FONT SIZE=2 FACE="Arial">  # out the above sections:</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #echo "<P><DIV ALIGN=\"CENTER\"><HR>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #echo "<B>============== $1 ==============</B>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #echo "<B>--- ($2) ---</B>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #echo "<HR></DIV>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #echo "<BLOCKQUOTE>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">}</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">get_footer()</FONT>

<BR><FONT SIZE=2 FACE="Arial">{</FONT>

<BR><FONT SIZE=2 FACE="Arial">  echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">  # If you want the "Paul Luzzi" look uncomment this section and comment</FONT>

<BR><FONT SIZE=2 FACE="Arial">  # out the above sections:</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #echo "</BLOCKQUOTE>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">}</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  Get MD Status proc - used if the server uses a metadb</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">get_md_status()</FONT>

<BR><FONT SIZE=2 FACE="Arial">{</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####  Setup some variables for use later</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  COLOR="green"</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  # Check defaults have been set</FONT>

<BR><FONT SIZE=2 FACE="Arial">  if [ "$MDBIN" = "" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    MDBIN=/usr/sbin</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$YELLOW_PIC MDBIN command is not defined in etc/bbsys.local - using de</FONT>

<BR><FONT SIZE=2 FACE="Arial">fault: $MDBIN"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ "$METADB" = "" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    METADB=${MDBIN}/metadb</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$YELLOW_PIC METADB command is not defined in etc/bbsys.local - using d</FONT>

<BR><FONT SIZE=2 FACE="Arial">efault: $METADB"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ "$METAHS" = "" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    METAHS=${MDBIN}/metahs</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$YELLOW_PIC METAHS command is not defined in etc/bbsys.local - using d</FONT>

<BR><FONT SIZE=2 FACE="Arial">efault: $METAHS"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ "$METASTAT" = "" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    METASTAT=${MDBIN}/metastat</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$YELLOW_PIC METASTAT command is not defined in etc/bbsys.local - using</FONT>

<BR><FONT SIZE=2 FACE="Arial"> default: $METASTAT"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ### Check replicas for problems, capital letters in the flags indicate an erro</FONT>

<BR><FONT SIZE=2 FACE="Arial">r.</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">  get_header "MetaDatabases" "$METADB -i"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  dbtrouble=`${METADB} 2>/dev/null | ${TAIL} +2 | ${AWK} '{ fl = substr($0,1,20)</FONT>

<BR><FONT SIZE=2 FACE="Arial">; if (fl ~ /[A-Z]/) print $0 }'`</FONT>

<BR><FONT SIZE=2 FACE="Arial">  if [ "${dbtrouble}" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    COLOR="red"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$RED_PIC <B><I>Database replicas are not active: </I></B>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    ${METADB} -i 2>/dev/null</FONT>

<BR><FONT SIZE=2 FACE="Arial">  else</FONT>

<BR><FONT SIZE=2 FACE="Arial">    ${METADB} -i 2>/dev/null</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">  get_footer</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ### Check the metadevice state, if the state is not Okay, something is up.</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">  get_header "Metadevices" "$METASTAT"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  mdtrouble=`${METASTAT} | ${GREP} "Resyncing"`</FONT>

<BR><FONT SIZE=2 FACE="Arial">  if [ "${mdtrouble}" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    COLOR="yellow"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    CLR_PIC="$YELLOW_PIC"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">  mdtrouble=`${METASTAT} | ${GREP} -v "Resyncing" | ${AWK} '/State:/ { if ( $2 !</FONT>

<BR><FONT SIZE=2 FACE="Arial">= "Okay" ) print $0 }'`</FONT>

<BR><FONT SIZE=2 FACE="Arial">  if [ "${mdtrouble}" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    COLOR="red"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    CLR_PIC="$RED_PIC"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ "$COLOR" != "green" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$CLR_PIC <B><I>Metadevices are not Okay: </I></B>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    ${METASTAT}</FONT>

<BR><FONT SIZE=2 FACE="Arial">  else</FONT>

<BR><FONT SIZE=2 FACE="Arial">    ${METASTAT}</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">  get_footer</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ### Check the hotspares to see if any have been used.</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">### Hotspare test disabled because writing to BBOUT when no hotspare pools</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial"># get_header "Hot Spares" "$METAHS -i"</FONT>

<BR><FONT SIZE=2 FACE="Arial"># hstrouble=`${METAHS} -i |  ${AWK} ' /blocks/ { if ( $2 != "Available" ) print</FONT>

<BR><FONT SIZE=2 FACE="Arial">$0 }'`</FONT>

<BR><FONT SIZE=2 FACE="Arial"># if [ "${hstrouble}" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   if [ COLOR != "red" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">#     COLOR="yellow"</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   echo "$YELLOW_PIC <B><I>Hot spares in use: </I></B>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   ${METAHS} -i 2>&1</FONT>

<BR><FONT SIZE=2 FACE="Arial"># else</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   ${METAHS} -i 2>&1</FONT>

<BR><FONT SIZE=2 FACE="Arial"># fi</FONT>

<BR><FONT SIZE=2 FACE="Arial"># get_footer</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####  Make sure to export COLOR so that it gets back to "central"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  export COLOR</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  End of get_md_status proc</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">}</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  Get LSI Status proc - used if the server has LSI1030 or</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  LSI1064 RAID-enabled controllers.</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">get_lsi_status()</FONT>

<BR><FONT SIZE=2 FACE="Arial">{</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####  Setup some variables for use later</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  COLOR="green"</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  # Check defaults have been set</FONT>

<BR><FONT SIZE=2 FACE="Arial">  if [ "$RAIDCTL" = "" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    RAIDCTL=/usr/sbin</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$YELLOW_PIC RAIDCTL command is not defined in etc/bbsys.local - using default: $RAIDCTL"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ### Check replicas for problems. Strip off the header then print any entries</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ### that do not have the work OK in them, or do have the words "DEGRADED" or</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ### "FAILED".</FONT>

<BR><FONT SIZE=2 FACE="Arial">  ###</FONT>

<BR><FONT SIZE=2 FACE="Arial">  dberrors=`${SUDO} ${RAIDCTL} -l | ${AWK} 'BEGIN { D=0; }</FONT>

<BR><FONT SIZE=2 FACE="Arial">/------/ { D=1; next; }</FONT>

<BR><FONT SIZE=2 FACE="Arial">/DEGRADED|FAILED/ {     if (D==1) {print $0; next; } }</FONT>

<BR><FONT SIZE=2 FACE="Arial">/       OK/ { if (D==1) { next; } }</FONT>

<BR><FONT SIZE=2 FACE="Arial">{ if (D==1) {print "1 ",$0; } }' `</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ "${dberrors}" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    COLOR="red"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo ""</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$RED_PIC <B><I>RAID errors exist: </I></B>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "<pre>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    ${SUDO} ${RAIDCTL} -l</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "</pre>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  else</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "<pre>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">    ${SUDO} ${RAIDCTL} -l</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "</pre>"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">  get_footer</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####  Make sure to export COLOR so that it gets back to "central"</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  export COLOR</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  End of get_lsi_status proc</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">}</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  Get Status proc - used to get all responses</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">get_status()</FONT>

<BR><FONT SIZE=2 FACE="Arial">{</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####  Decide which RAID we have, then call the right subroutine.</FONT>

<BR><FONT SIZE=2 FACE="Arial">  #####</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  COLOR=WHITE</FONT>

<BR><FONT SIZE=2 FACE="Arial">  export COLOR</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ "${RAIDCTL}" != "" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    TST=`${SUDO} ${RAIDCTL} -l | grep "No RAID volumes found" | wc -l`</FONT>

<BR><FONT SIZE=2 FACE="Arial">    if [ $TST -lt 1 ]</FONT>

<BR><FONT SIZE=2 FACE="Arial">    then</FONT>

<BR><FONT SIZE=2 FACE="Arial">        get_lsi_status</FONT>

<BR><FONT SIZE=2 FACE="Arial">    fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ "${METADB}" != "" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    TST=`${METADB} 2>&1 | grep "there are no existing databases" | wc -l`</FONT>

<BR><FONT SIZE=2 FACE="Arial">    if [ $TST -lt 1 ]</FONT>

<BR><FONT SIZE=2 FACE="Arial">    then</FONT>

<BR><FONT SIZE=2 FACE="Arial">        get_md_status</FONT>

<BR><FONT SIZE=2 FACE="Arial">    fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  End of get_status proc</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">}</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####  Main body</FONT>

<BR><FONT SIZE=2 FACE="Arial">#####</FONT>

<BR><FONT SIZE=2 FACE="Arial">if [ "$CHECK_BB_HOSTS" = "Y" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">  # convert "," to "." in the hostname</FONT>

<BR><FONT SIZE=2 FACE="Arial">  MACHINE_WITH_DOTS=`echo $MACHINE | $SED 's/,/\./g'`</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  $GREP $MACHINE_WITH_DOTS $BBHOSTS | $GREP "$TEST" |</FONT>

<BR><FONT SIZE=2 FACE="Arial">  while read line</FONT>

<BR><FONT SIZE=2 FACE="Arial">  do</FONT>

<BR><FONT SIZE=2 FACE="Arial">    if [ ! -z "$line" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">      get_status > $BBTMP/$MACHINE.$TEST</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">      ### Tack the script version on to the end</FONT>

<BR><FONT SIZE=2 FACE="Arial">      echo "<table><tr><td align=right><font size=-1>${SCRIPT_VER}</font></td></tr></table>" >> $BBTMP/$MACHINE.$TEST</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">      if [ ${DEBUG} = "1" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">        echo "$BB $BBDISP \"status $BBTMP/$MACHINE.$TEST $COLOR" `$DATE` `$CAT $BBTMP/$MACHINE.$TEST` "\"" >> $BBTMP/raid.output</FONT></P>

<P><FONT SIZE=2 FACE="Arial">      else</FONT>

<BR><FONT SIZE=2 FACE="Arial">        # NOW USE THE BB COMMAND TO SEND THE DATA ACROSS</FONT>

<BR><FONT SIZE=2 FACE="Arial">        $BB $BBDISP "status $BBTMP/$MACHINE.$TEST $COLOR `$DATE` `$CAT $BBTMP/$MACHINE.$TEST` "</FONT>

<BR><FONT SIZE=2 FACE="Arial">      fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">    fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">  done</FONT>

<BR><FONT SIZE=2 FACE="Arial">else</FONT>

<BR><FONT SIZE=2 FACE="Arial">  get_status > $BBTMP/$MACHINE.$TEST</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  ### Tack the script version on to the end</FONT>

<BR><FONT SIZE=2 FACE="Arial">  echo "<table><tr><td align=right><font size=-1>${SCRIPT_VER}</font></td></tr></table>" >> $BBTMP/$MACHINE.$TEST</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">  if [ ${DEBUG} = "1" ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">    echo "$BB $BBDISP \"status $MACHINE.$TEST $COLOR" `$DATE` `$CAT $BBTMP/$MACHINE.$TEST` "\"</FONT>

<BR><FONT SIZE=2 FACE="Arial">" >> $BBTMP/raid.output</FONT>

<BR><FONT SIZE=2 FACE="Arial">  else</FONT>

<BR><FONT SIZE=2 FACE="Arial">  # NOW USE THE BB COMMAND TO SEND THE DATA ACROSS</FONT>

<BR><FONT SIZE=2 FACE="Arial">  $BB $BBDISP "status $MACHINE.$TEST $COLOR `$DATE` `$CAT $BBTMP/$MACHINE.$TEST`</FONT>

<BR><FONT SIZE=2 FACE="Arial"> "</FONT>

<BR><FONT SIZE=2 FACE="Arial">  fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">fi</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial"># Clean up our mess</FONT>

<BR><FONT SIZE=2 FACE="Arial"># Checking for existence of each file since the whole test may be optional</FONT>

<BR><FONT SIZE=2 FACE="Arial">#   and may not actually run on every client</FONT>

<BR><FONT SIZE=2 FACE="Arial">#</FONT>

<BR><FONT SIZE=2 FACE="Arial">if [ -f $BBTMP/$MACHINE.$TEST ]; then</FONT>

<BR><FONT SIZE=2 FACE="Arial">  $RM $BBTMP/$MACHINE.$TEST</FONT>

<BR><FONT SIZE=2 FACE="Arial">fi</FONT>

<BR><FONT SIZE=2 FACE="Arial">##############################################</FONT>

<BR><FONT SIZE=2 FACE="Arial"># end of script</FONT>

<BR><FONT SIZE=2 FACE="Arial">##############################################</FONT>

<BR><FONT SIZE=2 FACE="Arial">====</FONT>

<BR><FONT SIZE=2 FACE="Arial">-- </FONT>

<BR><FONT SIZE=2 FACE="Arial">Martin Ward</FONT>

<BR><B><FONT SIZE=2 FACE="Arial">Network Systems Operations Specialist</FONT></B>

<BR><FONT SIZE=2 FACE="Arial">DDI:    +44 (0) 20 7863 5218</FONT>

<BR><FONT SIZE=2 FACE="Arial">Fax:    +44 (0) 20 7863 5610</FONT>

<BR><FONT SIZE=2 FACE="Arial">Mob:    +44 (0) 7971 97 77 21</FONT>

<BR><A HREF="file://www.colt.net"><U><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">www.colt.net</FONT></U></A>
</P>

<P><FONT SIZE=2 FACE="Arial">Data | Voice | Managed Services </FONT>
</P>

<P><FONT COLOR="#008000" SIZE=2 FACE="Arial">Help reduce your carbon footprint | Think before you print</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">COLT Telecommunications, Beaufort House, 15 St Botolph Street, London, EC3A 7QN UK</FONT>

<BR><FONT SIZE=2 FACE="Arial">Registered in England and Wales, registered number 02452736, VAT number GB 645 4205 50</FONT>
</P>

<FONT SIZE=3><BR>
<BR>
*************************************************************************************<BR>
The message is intended for the named addressee only and may not be disclosed to or used by anyone else, nor may it be copied in any way. <BR>
<BR>
The contents of this message and its attachments are confidential and may also be subject to legal privilege.  If you are not the named addressee and/or have received this message in error, please advise us by e-mailing security@colt.net and delete the message and any attachments without retaining any copies. <BR>
<BR>
Internet communications are not secure and COLT does not accept responsibility for this message, its contents nor responsibility for any viruses. <BR>
<BR>
No contracts can be created or varied on behalf of COLT Telecommunications, its subsidiaries or affiliates ("COLT") and any other party by email Communications unless expressly agreed in writing with such other party.  <BR>
<BR>
Please note that incoming emails will be automatically scanned to eliminate potential viruses and unsolicited promotional emails. For more information refer to www.colt.net or contact us on +44(0)20 7390 3900.<BR>
</FONT>
</BODY>
</HTML>