
#!/bin/sh
# File	: chk_ifs_ping.sh
# By	: Maarten.deBoer@Atos.net, 240808
# Subject	: Script to check Interfaces (by IP-address) with ping
#(0.2),240808	: Upda LOG-file layout
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
HOSTNAME=`hostname |cut -d\. -f1`

HOSTS="${HOME}/etc/${PGM}.hosts"
MAX_PING=5

echo "`date` ${PGM} v${VER} started."
echo "  LOG=${LOG}"
echo "  HOSTS=${HOSTS}"
sleep 1

if [ ! -f ${HOSTS} ]; then
  echo "  HOSTS (${HOSTS}) NOT found. Exiting ..."|tee -a ${LOG}
  exit 4
fi  # HOSTS

cat ${HOSTS}|grep -v ^#|while read LINE
do
#  echo -n "  ${IP_ADDR} (${IP_NAME}) "
  IP_ADDR=`echo ${LINE}|awk '{print $1}'`
  IP_NAME=`echo ${LINE}|awk '{print $2}'`
  PING_ANSW=`ping -W 3 -c 1 ${IP_ADDR}`
  PING_EC=${?}
  PING_CNT=1
  if [ ${PING_EC} -ne 0 ]; then
    echo -n "`date +%Y-%m-%d-%H-%M-%S` ${IP_ADDR} (${IP_NAME}) [${HOSTNAME}] "|tee -a ${LOG}
    PING_CNT=1
    while [ ${PING_CNT} -lt ${MAX_PING} ]
    do
      sleep 1
      PING_ANSW=`ping -W 3 -c 1 ${IP_ADDR}`
      PING_EC=${?}
      if [ ${PING_EC} -ne 0 ]; then
        PING_CNT=`expr ${PING_CNT} + 1`
      fi  # EC <> 0
      echo -n "${PING_CNT} "|tee -a ${LOG}
    done  # while
    echo "x FAILED."|tee -a ${LOG}
  else
    echo -n "`date +%Y-%m-%d-%H-%M-%S` ${IP_ADDR} (${IP_NAME}) [${HOSTNAME}] "
    echo "=${PING_EC} ${PING_CNT}x"
  fi  # EC <> 0
done  # IP_ADDR

echo "`date` ${PGM} v${VER} finished."
exit 0

