Script help

 
Thread Tools Search this Thread
Homework and Emergencies Emergency UNIX and Linux Support Script help
# 1  
Old 04-10-2011
Script help

Hi!

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

Code:
#!/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.

Last edited by pludi; 04-10-2011 at 05:08 AM..
# 2  
Old 04-10-2011
Code:
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 Smilie
However, if this does work, then you can search for any word you want, not just "ALIVE"

Last edited by Puddles187; 04-10-2011 at 09:39 AM.. Reason: Added functionality
# 3  
Old 04-11-2011
Puddles, your code is not gonna work for several reasons:
Code:
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.
Code:
LOOP=1 
while [ $LOOP -eq 1 ]; do  
  if [ -z "$grep_output" ]; then     
    let LOOP = 1

How's this?
Code:
#!/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

# 4  
Old 04-11-2011
Thanks Mirni,

Here is the code I have come up with -
Code:
#!/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!
# 5  
Old 04-12-2011
Whatcontains /fs1/ainuser/ain/user-1/list ?
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question