Home > Nagios, plugins > check_http.sh

check_http.sh

March 14th, 2014 Leave a comment Go to comments

Simple bash script using curl to check a website.
It works on HTTP and HTTPS.
Requirement: curl
Usage ./check_http.sh
Example:
./check_http.sh ‘http://oglobo.globo.com’ oglobo 1
OK – Site oglobo.globo.com key oglobo time 0.019 |’time’=0.019s;1

Here is the code:




#!/bin/bash
#Verificar um HTTPS
#Felipe Ferreira set 2013

URL=$1
KEY=$2
CRIT=$3
http_proxy="" 

DEBUG=

if [ -z $CRIT ]; then
   echo "Usage $0   "
   exit 3
fi

TC=`echo ${URL} | awk -F. '{print \$1}' |awk -F/ '{print \$NF}'`
TMP="/tmp/check_http_sh_${TC}.tmp"

CMD_TIME="curl -k --location --no-buffer --silent --output ${TMP} -w %{time_connect}:%{time_starttransfer}:%{time_total} '${URL}'"
TIME=`eval $CMD_TIME`

if [ -f $TMP ]; then
   RESULT=`grep -c $KEY $TMP`
else
   echo "UNKOWN - Could not create tmp file $TMP"
#   exit 3
fi

TIMETOT=`echo $TIME | gawk  -F: '{ print \$3 }'`

if [ ! -z $DEBUG ]; then
echo "CMD_TIME: $CMD_TIME" 
echo "NUMBER OF $KEY FOUNDS:  $RESULT"
echo "TIMES: $TIME"
echo "TIME TOTAL: $TIMETOT"
echo "TMP: $TMP"
ls $TMP
fi

rm -f $TMP

SURL=`echo $URL | cut -d "/" -f3-4`

MSGOK="Site $SURL key $KEY time $TIMETOT |'time'=${TIMETOT}s;${CRIT}"
MSGKO="Site $SURL has problems, time $TIMETOT |'time'=${TIMETOT}s;${CRIT}"

#PERFDATA HOWTO 'label'=value[UOM];[warn];[crit];[min];[max]

if [ "$RESULT" -ge "1" ] && [ $(echo "$TIMETOT < $CRIT"|bc) -eq 1 ]; then
   echo "OK - $MSGOK"
   exit 0
else
   echo "CRITICAL - $MSGKO"
   exit 2
fi
Categories: Nagios, plugins Tags: , , , ,
  1. Anne
    March 14th, 2014 at 22:00 | #1

    Can this script detect if the web page has been defaced?

    • admin
      March 25th, 2014 at 14:51 | #2

      yes it can

  2. jeremy
    January 28th, 2015 at 19:07 | #3

    Thanks so much for making this available — I had an F5 loadbalancer handing me redirect after redirect, because check_http doesn’t handle cookies. This check did exactly what I needed, and lets me verify that I’m getting good text on the final page loaded.

  3. John
    May 24th, 2016 at 12:42 | #4

    How might this script be altered please to handle the passing in of either a username and password pair, or a certificate and privatekey pair (in PEM format)?

    I’d do it myself but I don’t know curl at all.

    Thanks.

  1. No trackbacks yet.

VAMOVE *

*