[Nagiosplug-help] Strange problem with Bash, AWK and check_http

Alex Griffin agriffin at nagios.com
Wed Apr 11 18:16:09 CEST 2012


Hey Edward,

I'm glad you got everything figured out! I just thought I'd leave some 
shell tips based on the few lines of your script that you posted.

Your first pipeline can be replaced by a single awk command without 
losing much clarity (well, if you know awk). You also had some 
unnecessary quotes in your 'command' variable assignment.

     test=$(awk -F= '/ServerFileName/ && /HHR/ {print $2}' /tmp/updates.txt)
     command="$check_http -v -N -H update.efefktdfde.co.uk -u/$test"

If you don't know a whole lot about awk, or if it's confusing for some 
other reason, you can at least get rid of cat by moving the filename to 
grep's invocation.

     grep ServerFileName /tmp/updates.txt

Finally, removing nasty invisible characters is a job for the tr utility.

     fileName=$(echo "$fileName" | tr -dc [:print:])

Alex Griffin
---
Tech Team
agriffin at nagios.com

On 04/11/2012 10:20 AM, Edward Blum wrote:
> FIXED!
>
> With a little research and when running check_http with -v I see the line
>
>   is 135 charactersktrace.co.uk:80/SetupHHRImporter1020.exe
> <http://charactersktrace.co.uk:80/SetupHHRImporter1020.exe>
>
> For some reason the variable had a funny hidden character of some sort
> in which check_http doesn't like.
>
> I cleansed the variable with:
>
>
> fileName=$(echo $fileName | egrep "[a-z,A-Z,.,0-9]{1,}" -o)
>
>
>
> On 10 April 2012 23:01, Edward Blum <eddy.blum at gmail.com
> <mailto:eddy.blum at gmail.com>> wrote:
>
>     Hi There,
>
>     I am having very strange problems creating a nagios plugin in Bash
>     using check_http to check contents of a Amazon S3 Bucket.
>
>     I am grabbing the URL of the file to grab from a txt file (changes
>     often) inside the bucket and using awk and grep extracting the Filename.
>
>     I have using the following syntax:
>
>     check_http -H myhost.com <http://myhost.com/> -N -v -u /testing.exe
>
>     Now this works fine when I run from the command line it also works
>     fine when running from the bash script. The problem lies when I try
>     the use the variable extracted using awk.
>
>     Here are the results of running my bash script :
>
>     is 135 charactersktdfde.co.uk:80/SetupddfImporter1020.exe
>     <http://charactersktdfde.co.uk/SetupddfImporter1020.exe>
>     STATUS: HTTP/1.1 400 Bad Request
>     **** HEADER ****
>     Transfer-Encoding: chunked
>     Date: Tue, 10 Apr 2012 21:47:21 GMT
>     Connection: close
>     Server: AmazonS3
>     **** CONTENT ****
>        [[ skipped ]]
>     HTTP WARNING: HTTP/1.1 400 Bad Request - 135 bytes in 0.027 second
>     response time |time=0.027087s;;;0.000000 size=135B;;;0
>
>     Here is what should appear:
>
>     http://update.efefktdfde.co.uk:80/SetupddfImporter1020.exe
>     <http://update.efefktdfde.co.uk/SetupddfImporter1020.exe> is 1460
>     characters
>     STATUS: HTTP/1.1 200 OK
>     **** HEADER ****
>     x-amz-id-2:
>     lmJo9jgflJdp+ehTirekL19lXFY5KsNJ13UkiSWlNjiWzeYtVJ1OX7VIDZrsMNUJ
>     x-amz-request-id: 7D72700CDF05E228
>     Date: Tue, 10 Apr 2012 21:47:13 GMT
>     x-amz-meta-cb-modifiedtime: Fri, 07 Oct 2011 03:36:32 GMT
>     Last-Modified: Mon, 24 Oct 2011 20:41:44 GMT
>     ETag: "ca684ddfa09409f8890e8c92bc68f619"
>     Accept-Ranges: bytes
>     Content-Type: application/octet-stream
>     Content-Length: 6056760
>     Server: AmazonS3
>     **** CONTENT ****
>        [[ skipped ]]
>     HTTP OK: HTTP/1.1 200 OK - 1460 bytes in 0.122 second response time
>     |time=0.122165s;;;0.000000 size=1460B;;;0
>
>     In the bash script I am using the syntax:
>
>     test=$(cat /tmp/updates.txt | grep ServerFileName | awk
>     'BEGIN{FS="="}{print $2}' | grep HHR)
>     command="$check_http -v -N -H update.efefktdfde.co.uk
>     <http://update.efefktdfde.co.uk/> -u"/"$test"
>
>     If I just do test=SetupddfImporter1020.exe then call command it
>     works fine, so I would think its my variable however if I run a If
>     statement to check if the one generating by the awk command is the
>     same as  test=SetupddfImporter1020.exe it says they are equal/
>
>     This is driving me round the bend, any help would be much appreciated!!
>
>
>
>
> ------------------------------------------------------------------------------
> Better than sec? Nothing is better than sec when it comes to
> monitoring Big Data applications. Try Boundary one-second
> resolution app monitoring today. Free.
> http://p.sf.net/sfu/Boundary-dev2dev
>
>
>
> _______________________________________________
> Nagiosplug-help mailing list
> Nagiosplug-help at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nagiosplug-help
> ::: Please include plugins version (-v) and OS when reporting any issue.
> ::: Messages without supporting info will risk being sent to /dev/null




More information about the Help mailing list