All pastes #577845 Raw Edit

Someone

public text v1 · immutable
·published 2007-06-20 02:22 UTC
rendered paste body
#!/bin/bash
# Shell script to monitor running services such as web/http, ssh, mail etc. 
# If service fails it will send an Email to ADMIN user
# ---------------------------------------------------
# service port
ports="22 80 25 3306"

# service names as per above ports
service="SSH WEB MAIL MySQL"

# No of services to monitor as per (above ports+1)
SCOUNTER=5

#Email id to send alert
ADMINEMAIL="jan.gestre@yahoo.com"

# counter
c=1
echo "Running services status:"

# use sudo if you want i.e. sudo /bin/netstat 
/bin/netstat -tulpn | grep -vE '^Active|Proto' | while read LINE
do
 sendMail=0
 # get active port name and use : as delimiter
 t=$(echo $LINE | awk '{ print $4}' | cut -d: -f2)
 [ "$t" == "" ] && t=-1 || :
 # get service name from $services and : as delimiter
 sname=$(echo $service | cut -d' ' -f$c)
 sstatus="$sname: No"
 # now compare port
 for i in $ports
 do
  if [ $i -eq $t ]; then
   sstatus="$sname: Ok"
    sendMail=1
  fi
 done
 # display service status as OK or NO
 echo "$sstatus"
 #next service please
 c=$( expr $c + 1 )
 [ "$sendMail" == "0" ] && echo $sstatus | mail -s "service down $sstatus" $ADMINEMAIL || :
 # break afer 3 services
 [ $c -ge $SCOUNTER ] && break || :
done