Return code of 141 is out of bounds

Jack Sprat jackcsprat at yahoo.com
Wed Dec 17 18:38:00 CET 2008


Problem: Trying to read a pipe delimited file to retrieve status and port number is resulting in an "Return code of 141 is out of 
bounds" error.

Sample file being read, in this example, assume you want to collect servera and a status of "running" or "stopped". If the status 
is "running", then the status should appear as ok in Nagios. If the status is "stopped", then an email should go out indicating 
the port is down.
File being read has this (note: those are spaces before and after the pipes)
-------------------------
servera | 123 | Running   <---would show as "Port 123 is okay" in Nagios if working properly 
servera | 321 | Stopped   <---would show as "Port 321 is down" in Nagios if working properly
servera | 456 | Running
serverb | 123 | Stopped
serverb | 321 | Running
serverb | 456 | Running
Here is the script residing in libexec called app_port_monitoring.sh
---------------------------------------------------------------------
#!/bin/ksh
# 
GREPCMD=/usr/bin/grep
SSHCMD=/usr/local/bin/ssh
ECHOCMD=/usr/bin/echo
NAGIOSDIR=/apps/nagios
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
while getopts :u:s:p:h: OPT
do
case $OPT in
        u|+u ) export USER=$OPTARG ;;
        s|+s ) export SERVERNAME=$OPTARG ;;
        p|+p ) export PORT=$OPTARG ;;
        : ) $ECHO "$OPTARG requires an argument"; exit $STATE_UNKNOWN;;
        \? ) $ECHO "$OPTARG: bad option, use -h for help"; exit $STATE_UNKNOWN;;
        h|+h ) $ECHO "Usage: `basename $0` -u USER -s SERVERNAME -p PORT" ; exit $STATE_UNKNOWN;;
esac
done

if [ -z "$SERVERNAME" ]; then
echo "No SERVER specified"
 exit $STATE_UNKNOWN
fi
SSH_STATUS=`$SSHCMD -l ${USER} ${SERVERNAME} "pwd" >/dev/null; echo $?`
        if [ $SSH_STATUS -ne 0 ]; then
                echo "Cannot ssh to $SERVER"
                exit $STATE_UNKNOWN
        fi

/usr/bin/ksh 'ssh -n -o BatchMode=yes -o StrictHostKeyChecking=no -l ${USER} ${SERVERNAME} "export SHELL=bash; cd EEM; . ./ldap
-bash-traversal; . ./healthcheck; export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:/opt/app/${USER}/servers/lib\"; export PATH=\"\$PA
TH:/usr/local/bin:/bin\"; ldaphealth; . ./proxy_healthcheck"' |egrep -i 'stopped|running' | grep $USER | grep $PORT 
>/tmp/foo_output 2>&1

# File doesn't exist or doesn't have size greater than zero
if [[ -f /tmp/foo_output ]]; then
 echo "file exists"
else
 echo "file not found"
 exit $STATE_UNKNOWN
fi
while read LINE; do
echo ${LINE}
 STATUS=$(echo ${LINE} | awk {'print $5'})
 PORT=$(echo ${LINE} | awk {'print $3'})
       if [ -z "$STATUS" ]; then
                echo "Service check problem"
                EXITSTATUS=$STATE_UNKNOWN
        elif [ "$STATUS" = Stopped ]; then
        echo "${PORT} is down"
               EXITSTATUS=$STATE_CRITICAL
        elif [ "$STATUS" = Running ]; then
        echo "${PORT} is okay"
                EXITSTATUS=$STATE_OK
       else
                EXITSTATUS=$STATE_UNKNOWN
       fi

done < /tmp/foo_output

rm -f /tmp/foo_output
exit $EXITSTATUS
---------------------------------
I can place a set -x at the top of the script above and run it....below is the pertinent output
+ read LINE
+ echo servera | 123 | Running
servera | 123 | Running
+ + awk {print $5}
+ echo servera | 123 | Running
STATUS=Running
+ + awk {print $3}
+ echo servera | 123 | Running
PORT=123
+ [ -z Running ]
+ [ Running = Stopped ]        <---- problem ??
+ [ Running = Running ]        <---- problem ??
+ echo 123 is okay
123 is okay
+ EXITSTATUS=0
+ read LINE
+ exit 0            <--- exiting normally

Please let me know if additional information (like the service file info) is needed.  Thanks much for any input in getting this 
resolved.


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-lists.org/archive/users/attachments/20081217/073085d8/attachment.html>
-------------- next part --------------
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
-------------- next part --------------
_______________________________________________
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