OK, here's a starting point. (Or a finishing point.)<br>I was a little bored.<br>:-)<br><br>Code reviews and testing feedback appreciated.<br>(I have limited capability to test all possibilities)<br><br>The hobbit/xymon user will need sudo access to run fcinfo. See line 8.<br>
<br>Regards<br>     Vernon<br><br><span style="font-family: courier new,monospace;">$BBHOME/etc/clientlaunch.cfg</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">[hba]</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        CMD $HOBBITCLIENTHOME/ext/hba.ksh</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        LOGFILE $HOBBITCLIENTHOME/logs/hba.log</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        INTERVAL 5m</span><br>
<br><br><span style="font-family: courier new,monospace;">(hba.ksh attached - but they sometimes get stripped)</span><br><span style="font-family: courier new,monospace;">$BBHOME/ext/hba.ksh <br>#!/bin/ksh<br><br>if [ -x /usr/bin/zonename ]<br>
then<br>    [ $(/usr/bin/zonename) == "global" ] || exit 0  # I only run on global zones<br>fi<br>TEMPFILE=$BBTMP/hba.$$<br>FCINFO="/opt/csw/bin/sudo /usr/sbin/fcinfo"<br>COLOUR=green<br>CHECKSPEED=true<br>
CHECKONLINE=true<br>CHECKERRS=true<br><br>date > $TEMPFILE.out<br>$FCINFO hba-port | grep "No Adapters Found" > /dev/null<br>if [ $? -eq 0 ]<br>then<br>   # There are no adapters to work with.<br>   echo "No Adapters Found" >> $TEMPFILE.out<br>
   # Let's skip the rest of the crap<br>else<br>   $FCINFO hba-port | grep "HBA Port WWN:" \<br>                    | cut -d":" -f2 \<br>                    | while read WWN<br>                      do<br>
                         $FCINFO hba-port -l $WWN<br>                      done >> $TEMPFILE<br>   if [ "$CHECKONLINE" = "true" ]<br>   then<br>      cat $TEMPFILE | while read LINE<br>                      do<br>
                         ONLINE=$(echo "$LINE" | grep "State:" | cut -d":" -f2 | sed 's/^[ ]*//;s/[ ]*$//' )<br>                         if [ -n "$ONLINE" ]<br>                         then<br>
                            if [ "$ONLINE" = "online" ]<br>                            then<br>                               echo "&green $LINE" >> $TEMPFILE.online<br>                            else<br>
                               echo "&red $LINE" >> $TEMPFILE.online<br>                               COLOUR=red<br>                            fi<br>                         else<br>                            echo "$LINE" >> $TEMPFILE.online<br>
                         fi<br>                      done<br>                      [ "$COLOUR" = "red" ] && echo "&red HBA not online" >> $TEMPFILE.out<br>      mv $TEMPFILE.online $TEMPFILE<br>
   fi<br><br>   if [ "$CHECKSPEED" = "true" ]<br>   then<br>      cat $TEMPFILE | while read LINE<br>                      do<br>                         echo "$LINE" | grep "^HBA" > /dev/null && MAXSPEED="" && CURRSPEED="" && SPEEDS=""<br>
                         SPEEDS=$(echo "$LINE" | grep "Supported Speeds:")<br>                         [ -n "$SPEEDS" ] && MAXSPEED=$(echo "$SPEEDS" | awk '{ print $NF }')<br>
                         CURRSPEED=$(echo "$LINE" | grep "Current Speed:" | awk '{ print $NF }')<br>                         if [ -n "$CURRSPEED" -a "$CURRSPEED" != "$MAXSPEED" ]<br>
                         then<br>                            [ "$COLOUR" != "red" ] && COLOUR="yellow"<br>                            echo "&yellow Some HBAs not at optimal speed" >> $TEMPFILE.out<br>
                            echo "$LINE" | sed "s/Current/\&yellow Current/g" >> $TEMPFILE.speed<br>                            MAXSPEED=""<br>                            SPEEDS=""<br>
                            CURRSPEED=""<br>                         else<br>                            echo "$LINE" | sed "s/Current/\&green Current/g" >> $TEMPFILE.speed<br>                         fi<br>
                      done<br>      mv $TEMPFILE.speed $TEMPFILE<br>   fi<br><br>   TCOLOUR=$COLOUR<br>   COLOUR=green<br>   if [ "$CHECKERRS" = "true" ]<br>   then<br>      cat $TEMPFILE | while read LINE<br>
      do<br>         LCOL=green<br>         ERRLINE=$(echo "$LINE" | grep "Count:")<br>         if [ -n "$ERRLINE" ]<br>         then<br>            ERRCOUNT=$(echo "$ERRLINE" | cut -d":" -f2)<br>
            [ $ERRCOUNT -le 2 ] && LCOL=green && echo "&$LCOL $LINE"  >> $TEMPFILE.err<br>            [ $ERRCOUNT -gt 2 -a $ERRCOUNT -le 100 ] && LCOL=yellow && echo "&$LCOL $LINE" >> $TEMPFILE.err<br>
            [ $ERRCOUNT -gt 100 ] && LCOL=red && echo "&$LCOL $LINE" >> $TEMPFILE.err<br>         else<br>            echo "$LINE" >> $TEMPFILE.err<br>         fi<br>         [ "$LCOL" = "red" ]&& COLOUR=red<br>
         [ "$LCOL" = "yellow" -a "$COLOUR" != "red" ] && COLOUR=yellow<br>      done<br>      [ "$COLOUR" = "red" ] && echo "&red Critical error count detected" >> $TEMPFILE.out<br>
      [ "$COLOUR" = "yellow" ] && echo "&yellow High error count detected" >> $TEMPFILE.out<br>      mv $TEMPFILE.err $TEMPFILE<br>   fi<br>   [ "$TCOLOUR" = "red" ] && COLOUR="red"<br>
   [ "$TCOLOUR" = "yellow" -a "$COLOUR" != "red" ] && COLOUR= "yellow"<br><br>   cat $TEMPFILE | while read LINE<br>   do<br>      echo "$LINE" | grep "HBA Port" > /dev/null<br>
      if [ $? -eq 0 ]<br>      then<br>         echo "<b>" >> $TEMPFILE.out<br>         echo "$LINE</b>" >> $TEMPFILE.out<br>      else<br>         echo "$LINE" >> $TEMPFILE.out<br>
      fi<br>   done<br>fi<br><br>$BB $BBDISP "status $MACHINE.hba $COLOUR $(cat $TEMPFILE.out)"<br>rm $TEMPFILE $TEMPFILE.out 2> /dev/null<br><br></span><br><br><br><br><br><br><br><br><br><br><br><br><div class="gmail_quote">
On Tue, Aug 10, 2010 at 11:17 AM, Vernon Everett <span dir="ltr"><<a href="mailto:everett.vernon@gmail.com">everett.vernon@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Wrote a script a long time ago, in a contract far far away......<br>Went looking for it after my last posting, and I can't find it. :-(<br><br>From memory, it was very rough, and didn't really do much, besides provide visibility, and check state and error counts.<br>

I think the key information gathering command was something like this<br><span style="font-family: courier new,monospace;">fcinfo hba-port | grep "HBA Port WWN:" \<br>                | cut -d":" -f2 \<br>

                | while read WWN; do fcinfo hba-port -l $WWN; done</span><br>I bunged that into a temp file, and then did a little creative grepping for stuff like "State:" and "Current Speed:"<br>YMMV<br>

<br>If you want to collaborate on this one, I have a few spare cycles in my current contract.<br>If you are really busy, it looks interesting enough that I might just run with it :-)<br>(It may also be useful in my environment)<br>

<br>Cheers<br><font color="#888888">     V</font><div><div></div><div class="h5"><br><br><div class="gmail_quote">On Tue, Aug 10, 2010 at 10:04 AM, Vernon Everett <span dir="ltr"><<a href="mailto:everett.vernon@gmail.com" target="_blank">everett.vernon@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
What are you looking to know?<div><div></div><div><br><br><div class="gmail_quote">On Mon, Aug 9, 2010 at 10:14 PM, Kevin Kelly <span dir="ltr"><<a href="mailto:kkelly@lifetouch.com" target="_blank">kkelly@lifetouch.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">









<div link="blue" vlink="purple" lang="EN-US">

<div>

<p class="MsoNormal">Does anyone know of a script that monitors HBA in a Solaris
environment? Just thought I would check before I spend time on creating one.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Thanks in Advanced!</p>

<p class="MsoNormal">-Kevin</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"> </p>

</div>

<br>
______________________________________________________________________<br>
This email has been scanned by the MessageLabs Email Security System.<br>
For more information please visit <a href="http://www.messagelabs.com/email" target="_blank">http://www.messagelabs.com/email</a> <br>
_____________________________________________________________________<br>
</div>


</blockquote></div><br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>