[Xymon] if statment issue on ext script
Steve Coile
scoile at mcclatchyinteractive.com
Thu Sep 25 16:08:46 CEST 2014
Rodney, your script is broken on many levels.
- The code you provided is incomplete: the *while* loop has a *do*, but
no *done*, and the outer-most *if* has a *then* but no *fi*.
- It isn't clear what *do_fetch* does, nor what the *$REGEX* used to
*grep* its output matches.
- The use of *`echo "$IP"`* is excessive: *"$IP"* is sufficient. For
instance:
if [[ *`echo "$IP"`* =~ ^10.xxx.xxx.1[0-9] ]]; then
should be:
if [[ *"$IP"* =~ ^10.xxx.xxx.1[0-9] ]]; then
- Your regular expressions in the *[[ ]]* expressions should be
single-quoted, and the periods in the IP addresses should be escaped to
they are matched literally, and not used as special characters. For
instance:
if [[ `echo "$IP"` =~ *^10.xxx.xxx.1[0-9]* ]]; then
should be:
if [[ "$IP" =~ *'^10\.xxx\.xxx\.1[0-9]$'* ]]; then
- Your use of *echo* in your variable definitions is excessive; the
literal string is sufficient. For instance:
HOST=*`echo "server33.test.corp.local"`*
should be:
HOST=*'server33.test.corp.local'*
- Your *if* statements attempting to identify $IP assume $IP will match
one of the regular expressions. What if it doesn't? You should include
some error handling, such as:
*else*
*echo "$IP: unrecognized address" >&2*
*exit 1*
- It's not clear where *$X* comes from or what it represents.
- The if statement testing *$X *is overly complex.
if [ *$(echo "$X < 10" | bc) -ne 0* ]; then
should be:
if [ *$X -lt 10* ]; then
- The definition of *$MSG* contains unnecessary and potentially
problematic quotes.
MSG="
BIG BROTHER MESSAGE
-------------------
DATACENTER : D1
SERVER : *"*$HOST*"*
STATE : Normal
STATUS : Green
TEST : TestProd EchoTest
RESPONSE SUCCEEDED : *"*$X*"* sec
IP : *"*$IP*"*
EVENT TIME : `date +"%c"`
"
should be:
MSG="
BIG BROTHER MESSAGE
-------------------
DATACENTER : D1
SERVER : $HOST
STATE : Normal
STATUS : Green
TEST : TestProd EchoTest
RESPONSE SUCCEEDED : $X sec
IP : $IP
EVENT TIME : `date +"%c"`
"
--
*Steve Coile*Senior Network and Systems Engineer, McClatchy Interactive
<http://www.mcclatchyinteractive.com/>
Office: 919-861-1247 | Mobile: 919-622-5369 | Fax: 919-861-1300
On Thu, Sep 25, 2014 at 9:32 AM, James Louis <jglouisjr at gmail.com> wrote:
> Just for test purposes can you add a line like "TESTWORD=`echo
> myTestWord`" in each if statement and then add a line to the msg like
> "TESTWORD : $TESTWORD" and then run it again.
>
> Thanks,
> Jim
>
> On Thu, Sep 25, 2014 at 8:20 AM, Simioni, Rodney <rsimion at transunion.com>
> wrote:
>
>> Sorry about that.
>>
>> The issue is that $HOST is not printed in the output next to SERVER.
>>
>>
>>
>> $BBHOME/bin/bbhostgrep $TESTNAME | while read IP HOSTNAME OTHER; do
>>
>> if do_fetch $HOSTNAME $IP | grep "$REGEX" > /dev/null ; then
>>
>>
>>
>>
>>
>> if [[ `echo "$IP"` =~ ^10.xxx.xxx.1[0-9] ]]; then
>>
>> HOST=`echo "server33.test.corp.local"`
>>
>>
>>
>> elif [[ `echo "$IP"` =~ ^10.xxx.xxx.2[0-9] ]]; then
>>
>> HOST=`echo "server34.test.corp.local"`
>>
>>
>>
>> elif [[ `echo "$IP"` =~ ^10.xxx.xxx.3[0-9] ]]; then
>>
>> HOST=`echo "server35.test.corp.local"`
>>
>>
>>
>> elif [[ `echo "$IP"` =~ ^10.xxx.xxx.4[0-9] ]]; then
>>
>> HOST=`echo "server36.test.corp.local"`
>>
>>
>>
>> elif [[ `echo "$IP"` =~ ^10.xxx.xxx.5[0-9] ]]; then
>>
>> HOST=`echo "server37.test.corp.local"`
>>
>>
>>
>> elif [[ `echo "$IP"` =~ ^10.xxx.xxx.6[0-9] ]]; then
>>
>> HOST=`echo "server38.test.corp.local"`
>>
>>
>>
>> elif [[ `echo "$IP"` =~ ^10.xxx.xxx.7[0-9] ]]; then
>>
>> HOST=`echo "server39.test.corp.local"`
>>
>> fi
>>
>>
>>
>> if [ $(echo "$X < 10" | bc) -ne 0 ]; then
>>
>> COL=green
>>
>> MSG="
>>
>> BIG BROTHER MESSAGE
>>
>> -------------------
>>
>> DATACENTER : D1
>>
>> SERVER : "$HOST"
>>
>> STATE : Normal
>>
>> STATUS : Green
>>
>> TEST : TestProd EchoTest
>>
>> RESPONSE SUCCEEDED : "$X" sec
>>
>> IP : "$IP"
>>
>> EVENT TIME : `date +"%c"`
>>
>>
>>
>> "
>>
>>
>>
>> $BB $BBDISP "status $HOSTNAME.$TESTNAME $COL
>>
>> $MSG"
>>
>> #########################
>>
>> Here is the output – notice that server is empty:
>>
>>
>>
>> XYMON MESSAGE
>> -------------------
>> DATACENTER : D1
>> SERVER :
>> STATE : Normal
>> STATUS : Green
>> TEST : test
>> RESPONSE SUCCEEDED : .079411876 sec
>> IPADDRESS : 10.xxx.xxx.xxx
>> EVENT TIME : Wed 24 Sep 2014 05:48:21 PM EDT
>>
>>
>>
>>
>>
>>
>>
>> *From:* Xymon [mailto:xymon-bounces at xymon.com] *On Behalf Of *James Louis
>> *Sent:* Thursday, September 25, 2014 9:06 AM
>> *To:* usa ims
>> *Cc:* xymon at xymon.com
>> *Subject:* Re: [Xymon] if statment issue on ext script
>>
>>
>>
>>
>>
>> On Wed, Sep 24, 2014 at 4:55 PM, usa ims via Xymon <xymon at xymon.com>
>> wrote:
>>
>> XYMON MESSAGE
>> -------------------
>> DATACENTER : D1
>> SERVER :
>> STATE : Normal
>> STATUS : Green
>> TEST : test
>> RESPONSE SUCCEEDED : .079411876 sec
>> IPADDRESS : 10.xxx.xxx.xxx
>> EVENT TIME : Wed 24 Sep 2014 05:48:21 PM EDT
>>
>>
>>
>> Why is there more to your MSG than what is in your script?
>>
>> Jim
>>
>>
>>
>> --
>>
>>
>>
>>
>>
>>
>> * Jim Louis \\\\||//// \ ~ ~ / | @ @ |*
>>
>> *--oOo---(_)---oOo--*
>>
>> "If a free society cannot help the many who are poor, it cannot save the
>> few who are rich." ~ John Kennedy
>>
>
>
>
> --
>
>
>
>
>
>
> * Jim Louis \\\\||//// \ ~ ~ / | @ @ |*
>
>
> *--oOo---(_)---oOo--*
>
> "If a free society cannot help the many who are poor, it cannot save the
> few who are rich." ~ John Kennedy
>
> _______________________________________________
> Xymon mailing list
> Xymon at xymon.com
> http://lists.xymon.com/mailman/listinfo/xymon
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xymon.com/pipermail/xymon/attachments/20140925/4a3a7cc5/attachment.html>
More information about the Xymon
mailing list