
#!/bin/sh
# File	: rpt_ifs_ping.sh
# By	: MaartenDeBoer.nl, 241017
# Subject	: Script to report ERR's of (chk_ifs_ping.sh) on daily basis
#(0.2),241111	: Added ${1}
#(0.3),241121	: Mod DATESTR => DFILTER (Date Filter), Added RCFILE, ASC
PGM=`basename $0|cut -d\. -f1`
VER="0.3"
LOG="${HOME}/log/${PGM}.log"
TMP="/tmp/${PGM}.$$"
MAILTO="maarten.deboer@atos.net"
RCFILE="${HOME}/etc/${PGM}.rc"
MAIL="" 
ASC="/tmp/${PGM}.asc"

ERRFILE="${HOME}/log/chk_ifs_ping.err"
#DATESTR=`date +%Y-%m-%d`
DFILTER=`date +%Y-%m-%d`

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -d <Date-filter>  : DFILTER (${DFILTER})"
  echo "    -e <ERR_file : EFF-FILE (${ERRFILE})"
  echo "    -f <Filter>  : dateFILTER (${DFILTER})"
  echo "    -m           : Mail TMP-file to ${MAILTO})"
  echo "    --mailto     : define MAILTO (${MAILTO}) address"
  echo "    -h | --help  : this help"
  echo "    -x           : set -x"
  echo "    -V           : Version"
}
# When RCFILE
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using ..."|tee -a ${LOG}
  . ${RCFILE}
fi  # RCFILE
# Check options
while [ ${#} -gt 0 ]
  do
  case ${1} in
    -d) DFILTER="${2}"; shift ;;
    -f) DFILTER="${2}"; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -m) MAIL=1;;
    --mailto) MAILTO=${2}; MAIL=1; shift;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo " ASC=${ASC}"
echo " DFILTER=${DFILTER}"
echo " ERRFILE=${ERRFILE}"
echo " MAIL=${MAIL}"
echo " MAILTO=${MAILTO}"
echo " TMP=${TMP}"
sleep 1

touch ${TMP} ${TMP}.mail
echo "${PGM} (v${VER}): DateFILTER = ${DFILTER}" > ${ASC}

grep "${DFILTER}" ${ERRFILE} > ${TMP}
SOURCE=`grep "${IP_ADDR}" ${TMP} |cut -d\[ -f2 | cut -d\] -f1 |sort -u`
echo "From: ${SOURCE} " >> ${ASC}

cat ${TMP} | awk '{print $2}' |sort -u|while read IP_ADDR
do
  CNT=`grep -c "${IP_ADDR}" ${TMP}`
  HOST_NAME=`grep "${IP_ADDR}" ${TMP} |cut -d\( -f2 | cut -d\) -f1 |sort -u`

  echo "  IP_ADDR=${IP_ADDR} HOST_NAME=${HOST_NAME} CNT=${CNT}"

  echo "${CNT}x ${IP_ADDR} ${HOST_NAME}" >> ${ASC}

done  # IP_ADDR


if [ ${MAIL} ] && [ "${MAILTO}" != "" ] && [ -s ${TMP} ]; then
  echo "-----------------------------------------" >> ${ASC}
  cat ${TMP} >> ${ASC}
  cat ${ASC} | mailx -a ${ASC} -s "Check ping ERROR report (${DFILTER}) [${PGM} v${VER}]" "${MAILTO}"
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAILTO

rm ${TMP} 
echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
exit 0

