#!/bin/bash
# check and log if a host is reachable by ping

#CONFIGURATION

#IP of host
WATCH_IP="192.168.1.1"
#path to logfile
LOGFILE="/var/log/power.log"
#duration between pings
PAUSE=60
#how many failed pings before log
TESTS=2
#how many failed pings before shutdown
SHUTDOWN=30

#SCRIPT

#initialize
MISSED=0
touch $LOGFILE

while true; do
  if ! ping -c 1 -w 1 $WATCH_IP > /dev/null; then
    ((MISSED++))
  else
    if [ $MISSED -ge $TESTS ]; then
      echo `date` '-' $WATCH_IP "is up again." >> $LOGFILE;
    fi
    MISSED=0
  fi;
  if [ $MISSED -eq $TESTS ]; then
    echo `date` "-" $WATCH_IP "is down." >> $LOGFILE;
  fi
  if [ $MISSED -eq $SHUTDOWN ]; then
    echo `date` "- shutdown because power loss." >> $LOGFILE;
    shutdown now
  fi
  sleep $PAUSE;
done