Script help

Hi!

I have the following script which I am using to curl against a file which as few URLs-

#!/bin/sh

RESULT=0

# read all input from the specified file
exec <"$1"

while true
do
read SERVICE
if [ "$SERVICE" = "" ]
then
# no more services
exit $RESULT
fi

read URL
if [ "$URL" = "" ]
then
# error in service list file
echo "ERROR: no URL for service $SERVICE" >&2
exit 2
fi

echo "Testing $SERVICE: "

# adjust the options to suit your needs
curl -I $URL

if [ $? -eq 0 ]
then
echo "Success"
else
echo "Fail"
RESULT=1
fi
done

From the curl command I get a text in the html page which says ALIVE, I want to alert(email me) if the text does not contain the word ALIVE.

Please help.

Thanks,
Jack.

if [ $# -ne 2 ] ; then
  echo "usage: $0 <word> <website>"
fi

curl $2 | grep_output="$(grep $1 $2)"

LOOP=1
while [ $LOOP -eq 1 ]; do 
if [ -z "$grep_output" ]; then
    let LOOP = 1
else
    echo "WARNING!" | mail -s (subject) -c (your e-mail address)
    let LOOP=0
fi
done

This should work for what you're describing, but try it first, I'm somewhat new, and not quite sure if this will work myself :confused:
However, if this does work, then you can search for any word you want, not just "ALIVE"

Puddles, your code is not gonna work for several reasons:

curl $2 | grep_output="$(grep $1 $2)"

You're piping the output of curl into grep_output, which is not a command, and shell won't know what to do with it.
Then you end up in an infinite loop if grep_output is empty.

LOOP=1 
while [ $LOOP -eq 1 ]; do  
  if [ -z "$grep_output" ]; then     
    let LOOP = 1

How's this?

#!/bin/sh
while read SERVICE URL ; do 
   [[ "$URL" = "" ]] && echo "ERROR: no URL for service $SERVICE" >&2 && exit 2
   echo "Testing $SERVICE: "   
  # adjust the options to suit your needs
   curl -I $URL | grep ALIVE  
   if [ $? -eq 0 ] ;then
      echo "ALIVE found"
   else
     echo "Nobody alive" | mail -s subject me@somedomain.dom
   fi
done < $1

Thanks Mirni,

Here is the code I have come up with -

#!/bin/sh

OP=0

exec <"/fs1/ainuser/ain/user-1/list"

while true
do
        read APP
                if [ "$APP" = "" ]
                then
                        exit $OP
                fi

        read URL
                if [ "$URL" = "" ]
                then
                        echo "ERROR no URL defined for $APP" >&2
                        exit 2
                fi

        sleep 3

        echo "Checking $APP: "
        curl $URL |grep -q -i alive
        x=$?
                if [ ${x} -eq 0 ]
                then
                        echo "App is alive : `date`"
                else
                        echo "$APP is down in env-1" | mail -s "$APP is down in env-1" testalert@email.com
                fi
done

Now I want to test the viability of the URL atleast 6 times with 3 seconds intervals and if it fails 4 times out of 6 then send the email.

I am really struggling on this one.. please help!!

Thanks,
Jack.

---------- Post updated at 04:07 PM ---------- Previous update was at 02:32 PM ----------

please help!

What contains /fs1/ainuser/ain/user-1/list ?