Advertisement
Guest User

Untitled

a guest
Nov 14th, 2011
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.54 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # add ip or hostname space separated
  4. HOSTLIST="example.com 8.8.8.8"
  5.  
  6. # email report
  7. MAILTO="YOU@gmail.com"
  8. MAILFROM="YOU@example.com"
  9. USER_HOME="/Users/YOU/"
  10.  
  11. # number of ping requests,  timeout in seconds and a threshold
  12. COUNT=5
  13. TIMEOUT=2
  14. MAXFAIL=2
  15.  
  16. # ip to use to check if *this* machine can ping (8.8.4.4 is google dns)
  17. CONTROLIP="8.8.4.4"
  18.  
  19. #
  20. let "THRESHOLD = $COUNT - $MAXFAIL"
  21.  
  22. ping -c 1 -W $TIMEOUT $CONTROLIP > /dev/null && for HOST in $HOSTLIST
  23. do
  24. count=$(ping -c $COUNT -W $TIMEOUT $HOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
  25. if [ $count -lt $THRESHOLD ] ; then
  26. # too many ping failed but control is up: if previously up->failed-once, if failed-once->down
  27.  
  28. if [ -f $USER_HOME.up-$HOST ];    then
  29. mv  $USER_HOME.up-$HOST $USER_HOME.failed-once-$HOST
  30. else
  31. if [ -f $USER_HOME.failed-once-$HOST ]; then
  32. mv  $USER_HOME.failed-once-$HOST $USER_HOME.down-$HOST
  33. echo "Host : $HOST is down (ping failed) at $(date)" | mailx -s "Alert: $HOST is down" $MAILTO
  34. else
  35. # is it down or a new host -> failed-once
  36. if [ ! -f $USER_HOME.down-$HOST ];    then
  37. touch $USER_HOME.failed-once-$HOST
  38. fi
  39. fi
  40. fi
  41.  
  42. else
  43. # most ping ok, host is up: if !up -> up
  44.  
  45. if [ ! -f $USER_HOME.up-$HOST ]; then
  46. if [ -f $USER_HOME.failed-once-$HOST ]; then
  47. rm  $USER_HOME.failed-once-$HOST
  48. else
  49. if [ -f $USER_HOME.down-$HOST ]; then
  50. rm  $USER_HOME.down-$HOST
  51. echo "Host : $HOST is up again (ping ok) at $(date)" | mailx -s "Alert: $HOST is UP again" $MAILTO
  52. fi
  53. fi
  54. touch $USER_HOME.up-$HOST
  55. fi
  56.  
  57. fi
  58. done
  59.  
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement