[hobbit] Ability to follow 302 redirects

Charles Jones jonescr at cisco.com
Thu Jun 7 02:20:40 CEST 2007


I double-checked why my usage of curl wasn't working. I figured out what 
I did wrong, so I abandoned my perl version and created one using shell 
and curl. Here is a generic server-side script that will do content 
checks. It lets you set contchk tags in bb-hosts and should be run 
server-side via hobbit-launch.cfg:

#!/bin/bash
# contchk.sh written by Charles Jones (blazer0x at gmail.com) 6/6/2007
# This script is designed to perform a content check on a URL and report the
# status to a Hobbit server.
#
# This script was created because Hobbits built-in content check 
functionality
# does not follow 302 redirects.
#
# The script parses out a "contchk" tag in the bb-hosts file. The proper
# syntax is: contchk;URL;REFERRER;CHECKSTRING
#
# Note that CHECKSTRING cannot contain spaces so you must use regular
# expression metacharacters, so use something like string.with.spaces
CURL=/usr/bin/curl # Location of curl binary
BBHTAG=contchk     # Name of the tag in bb-hosts
COLUMN=cont        # Column display name in Hobbit
# Note: using grep because bbhostgrep fails on long lines
grep $BBHTAG $BBHOME/etc/bb-hosts | while read L
   do
      set $L    # To get one line of output from bbhostgrep
      HOSTIP="$1"
      MACHINEDOTS="$2"
      MACHINE=`echo $2 | $SED -e's/\./,/g'`
      CHECKURL=`echo $4 | awk -F";" '{print $2}'`    # Parse out the 
check URL
      REFERRER=`echo $4 | awk -F";" '{print $3}'`    # Parse out the 
referrer string
      CHECKSTRING=`echo $4 | awk -F";" '{print $4}'` # Parse out the 
check string
      $CURL -s -L -e $REFERRER $CHECKURL -b cookiejar |grep -q 
"$CHECKSTRING"
      status=$? # Save greps return status
      if [ 0 -eq $status ]; then # grep returns 0 if it found something
        COLOR=green
        MSG="String <b>\"$CHECKSTRING\"</b> was found in <a 
href=$CHECKURL>$CHECKURL</a>"
        $BB $BBDISP "status $MACHINE.$COLUMN $COLOR `date` Content Check OK
        ${MSG}
        "
      else # grep didn't find anything
        COLOR=red
        MSG="String <b>\"$CHECKSTRING\"</b> was NOT FOUND in <a 
href=$CHECKURL>$CHECKURL</a>"
        $BB $BBDISP "status $MACHINE.$COLUMN $COLOR `date` Content Check 
FAILED
        ${MSG}
        "
      fi
   done
exit 0

Charles Jones wrote:
> I actually just whipped one up in perl, which I will post once I get 
> it in decent shape. If yours is a shell script that uses curl, that 
> might be easier for folks to use, since mine requires a couple of perl 
> modules (LWP::UserAgent, HTTP:Headers) to function. I initially tried 
> a shell script with curl but I couldn't get curl to properly pass the 
> authentication cookie to the redirected URL without doing 2 requests, 
> but I didn't spend much time on it so I was probably doing something 
> wrong :)
>
> -Charles
>
> Ralph Mitchell wrote:
>> On 6/5/07, Charles Jones <jonescr at cisco.com> wrote:
>>> I'm trying to do a content check of a URL that 302's (because an auth
>>> token is being passed in the URL). The problem I am having is Hobbit
>>> reports "No output received from server".
>>>
>>> I searched the archives and noted that Hobbit does not (yet?) support
>>> following 302 redirects, but shouldn't it get "something" back from the
>>> server? If anything I could check the 302 code to verify that it is
>>> redirecting to the authenticated URL instead of the error one.
>>
>> I'm doing this all the time, sucking web pages off our servers to
>> validate correct operation.  I'm using curl, in custom bash scripts,
>> to grab pages.  curl is very good at following 302 redirects, going
>> through proxies with or without authentication, etc.
>>
>> I've been meaning to post a more-or-less generic script, but haven't
>> made the time to get it together.  If you're interested, we could work
>> something out offlist, then post a result either here or maybe on the
>> Shire.
>
> To unsubscribe from the hobbit list, send an e-mail to
> hobbit-unsubscribe at hswn.dk



More information about the Xymon mailing list