The personal website of Philip Mather

Random Restart

#!/bin/bash
# little script to check webservers and restart if necessary...
 
# Added by Phil 26/01/2009, generates a random number between 3 and 10 to 4 decimal places with the
# intent that it be used by the sleep function to generate a pause between Apache's stop and start.
function getSleepTime()
{
   number=0   #initialize
   MIN=8000
   MAX=12000
 
   while [ "$number" -le $MIN ]
   do
      number=$RANDOM
      let "number %= $MAX"
   done
 
   SLEEP_TIME=$(echo "scale=4; $number / 1000" | bc)
}
 
for server in `seq 2 5`
do
        result=$(curl -sfm 1 --stderr /dev/null "http://192.168.1.${server}/test.php" | grep -c YES)
        if [ $result == "0" ]
        then
                getSleepTime
                /usr/bin/logger "Restarting $server with delay of $SLEEP_TIME"
                ssh watchme@${server} "sudo /etc/rc.d/rc.httpd stop ; sleep $SLEEP_TIME ; sudo /etc/rc.d/rc.httpd start" > /dev/null
        fi
done