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>