tw_cli command

Rick Mangus rick.mangus+nagios at gmail.com
Wed Aug 18 16:54:56 CEST 2010


Your code exits on the first controller no matter what.

The answer is simple:  Don't exit from within your loop.  Keep status
information, then exit after checking all controllers.

Simplest version:

> retval=0
> for c in $controllers;
> do sudo /usr/bin/tw_cli info $c | grep -eq "DEVICE-ERROR|DEGRADED|
> INOPERABLE|SMART-FAILURE"
> if [ $? -eq 0 ]; then
>  echo "Critical: raid problem with controller $c";
>  retval=2
>  fi
>  echo "Ok: Controller $c is fine"
> done
> exit $retval

This will output (for example):

Ok: Controller c0 is fine
Ok: Controller c1 is fine
Critical: raid problem with controller c2
Ok: Controller c3 is fine

and then return 2.

For further help with bash scripting, might I suggest the Advanced
Bash-Scripting Guide at http://tldp.org/LDP/abs/html/

Also, please read
http://nagios.sourceforge.net/docs/3_0/pluginapi.html to learn how to
format multi-line output from your plugin.

--Rick

On Wed, Aug 18, 2010 at 8:27 AM, Kaushal Shriyan
<kaushalshriyan at gmail.com> wrote:
> Hi,
>
> I have the below bash script for nagios plugin. The issue is that i
> dont need to hard code the controller c0 or c1 or c2 or c3. so on some
> servers there may be two controllers c0, and c1 and on some server
> there may be four controllers c0,1,2 and 3. I dont know it off hand
>
> Typically if i run tw_cli info i get
>
> tw_cli info
>
> Ctl   Model        Ports   Drives   Units   NotOpt   RRate   VRate
> BBU
> ------------------------------------------------------------------------
> c0    9550SX-8LP   8       8        4       0        1       1
> OK
> c1    9550SX-8LP   8       8        2       0        1       1
> OK
>
> #####################################################################################################
> controllers=$(tw_cli info | awk '/^c[0-9]/{print $1})
> for c in $controllers;
> do sudo /usr/bin/tw_cli info $c | grep -eq "DEVICE-ERROR|DEGRADED|
> INOPERABLE|SMART-FAILURE"
> if [ $? -eq 0 ]; then
>  echo "Critical: raid problem with controller $c";
>  exit 2
>  fi
>  echo "Ok:raid is fine"
>  exit 0
> done
> #####################################################################################################
>
> The issue with the above bash script is that it will exit with 2 if
> the controller c0 fail and it wont check for other controllers.
> I need to check for other controllers too at the same time
>
> Please suggest.
>
> Thanks,
>
> Kaushal
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by
>
> Make an app they can't live without
> Enter the BlackBerry Developer Challenge
> http://p.sf.net/sfu/RIM-dev2dev
> _______________________________________________
> Nagios-users mailing list
> Nagios-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nagios-users
> ::: Please include Nagios version, plugin version (-v) and OS when reporting any issue.
> ::: Messages without supporting info will risk being sent to /dev/null
>

------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null





More information about the Users mailing list