
#!/bin/sh
# File  : ping_netw.sh
# By    : MaartenDeBoer.nl, 090611, 110124
# Subject       : Ping filers from $HOME/etc/filers
#(0.2)	: Added nslookup
#(0.3),170511	: Some mod's
#(0.4),170512	: Added ${1}
#(0.5),170918	: Added web-page update + USAGE
#(0.6),170918	: Added colors
#(0.7),180705	: Mod nslookup | head -1
PGM="`basename $0|cut -d\. -f1`"
VER="0.7"
TMP="/tmp/${PGM}.$$.csv"
LOG="${HOME}/log/${PGM}.log"
HOSTNAME="`hostname|cut -d\. -f1`"
MAIL=""
MAILTO="maarten.deboer@atos.net"
#NETW="10.90.32"
NETW="10.192.109"
NETWEND=254
PART=1
WEBUPD=""
HTML="/appl/dfm/web/techlab/index.html"

USAGE()
{
  echo "Usage: ${PGM} <options>"
  echo "  Version: ${VER}"
  echo "  options        :"
  echo "    -e|--end     : End of network (${NETWEND})"
  echo "    -h|--help    : this Help"
  echo "    -m|--mail    : do send Mail"
  echo "    -n|--netw    : Netw (part) (${NETW})"
  echo "    -w|--webupd  : Update Web page (${HTML})"
  echo "    -V           : show Version"
  echo "    -x           : set -x"
  echo "    --mailto     : change MAILTO address & do send mail (${MAILTO})"
}
## MAIN
# Check options
if [ $# -eq 0 ]; then
  echo "No option(s) given. So not to know what to do. Exiting..."; echo; USAGE; exit 1
fi
while [ $# -gt 0 ]
  do
  case $1 in
    -m | --mail) MAIL=1 ;;
    -e | --etc) NETWEND=$2; shift ;;
    -n | --netw) NETW=$2; shift ;;
    -w | --webupd) WEBUPD=1 ;;
    --mailto) MAILTO=$2; MAIL=1; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known. Exiting..."; echo; USAGE; exit 1 ;;
  esac
    shift
done

echo "`date` ${PGM} v${VER} started. With NETW=${NETW}"|tee -a ${LOG}
touch ${TMP} 
echo "NETW=${NETW}"
echo "NETWEND=${NETWEND}"
echo "MAIL=${MAIL}"
echo "MAILTO=${MAILTO}"
echo "WEBUPD=${WEBUPD}"
echo "HTML=${HTML}"

sleep 1

if [ ${WEBUPD} ]; then
  echo "<!DOCTYPE html>" > ${HTML}
  echo "<HTML>" >> ${HTML}
  echo "<HEAD>" >> ${HTML}
  echo "<META charset='UTF-8'>" >> ${HTML}
  echo "<META content=Maarten de Boer name=AUTHOR>" >> ${HTML}
  echo "<TITLE> Ping & DNS status: </TITLE>" >> ${HTML}
  echo "<basefont face='verdana'>" >> ${HTML}
  echo "</HEAD>" >> ${HTML}
  echo "<BODY aLink=red bgColor=#D3D0D3 link=red text=#000000 vLink=#ff0000>" >> ${HTML}

  echo "<TABLE BORDER=0 WIDTH='100%'>" >> ${HTML}
  echo "<TR WIDTH=100% HEIGHT=40px>" >> ${HTML}
  echo "  <TD bgColor=#0066A1>" >> ${HTML}
  echo "    <BR>" >> ${HTML}
  echo "    <DIV align=right>" >> ${HTML}
  echo "    <FONT COLOR=white face='verdana' size='-3'> For internal use. (c) Atos `date +%Y` </B> </FONT>" >> ${HTML}
  echo "    </DIV>" >> ${HTML}
  echo "  <TD>" >> ${HTML}
  echo "</TR>" >> ${HTML}
  echo "</TABLE>" >> ${HTML}

  echo "<TABLE BORDER=1>" >> ${HTML}
  echo "<TR>" >> ${HTML}
  echo "  <TD> <B> IP-addr </TD>" >> ${HTML}
  echo "  <TD> <B> ping </TD>" >> ${HTML}
  echo "  <TD> <B> DNS </TD>" >> ${HTML}
  echo "  <TD> <B> Remarks </TD>" >> ${HTML}
  echo "</TR>" >> ${HTML}
  
fi

while [ ${PART} -le ${NETWEND} ]
do
  echo "${NETW}.${PART}"
  echo "<TR>" >> ${TMP}.2

  IPCOL=""
  PINGCOL=""
  PINGSTR=""
  NSLCOL=""
  REMARKS=""

  NSL="`nslookup ${NETW}.${PART}|grep name|cut -d\= -f2|head -1`"
  ping -W 2 -c 1 -W 1 ${NETW}.${PART}
  EC=${?}
  if [ ${EC} -eq 0 ]; then
    echo "${NETW}.${PART};OK;${NSL};" | tee -a ${TMP}
    PINGSTR="OK"
  else
    echo "${NETW}.${PART};no ping;;" | tee -a ${TMP}
    PINGSTR="NO ping" 
  fi

  if [ "${PINGSTR}" = "OK" ] && [ "${NSL}" != "" ]; then
    IPCOL="lightgreen"
    PINGCOL="lightgreen"
    NSLCOL="lightgreen"
    REMARKS="All OK"
  fi
  if [ "${PINGSTR}" = "OK" ] && [ "${NSL}" = "" ]; then
    IPCOL="yellow"
    PINGCOL="yellow"
    NSLCOL="yellow"
    REMARKS="Need to be added in DNS?"
  fi
  if [ "${PINGSTR}" != "OK" ] && [ "${NSL}" != "" ]; then
    IPCOL="orange"
    PINGCOL="orange"
    NSLCOL="orange"
    REMARKS="Is in DNS. But NO answer. Right?"
  fi

  echo "  <TD BGCOLOR=${IPCOL}> ${NETW}.${PART} </TD>" >> ${TMP}.2
  echo "  <TD BGCOLOR=${PINGCOL}> ${PINGSTR} </TD>" >> ${TMP}.2
  echo "  <TD BGCOLOR=${NSLCOL}> ${NSL} </TD>" >>  ${TMP}.2
  echo "  <TD> ${REMARKS} </TD>" >>  ${TMP}.2
  echo "</TR>" >> ${TMP}.2
  PART="`expr ${PART} + 1`"
done

if [ ${WEBUPD} ]; then
cat ${TMP}.2 >> ${HTML}
echo "  </TABLE>" >> ${HTML}

echo "<TABLE BORDER=0 WIDTH='100%'>" >> ${HTML}
echo "<TR WIDTH=100% > " >> ${HTML}
echo "  <TD bgColor=#0066A1 > " >> ${HTML}
echo "    <FONT COLOR=white face='Verdana' size='1'>" >> ${HTML}
echo "      <CENTER>" >> ${HTML}
echo "Contact: |Content Owner: <A HREF="mailto:Maarten.deBoer@Atos.net">Maarten de Boer</A> |Last Update: `date`|[${PGM} v${VER}]<BR>" >> ${HTML}
echo "For internal use (c) Atos S.A. `date +%Y` all rights reserved. Reproduction in whole or in part is prohibited without the written consent of Atos SA." >> ${HTML}
echo "      </CENTER>" >> ${HTML}
echo "    </FONT>" >> ${HTML}
echo "  </TD>" >> ${HTML}
echo "</TR>" >> ${HTML}
echo "</TABLE>" >> ${HTML}

echo "</BODY>" >> ${HTML}
echo "</HTML>" >> ${HTML}


fi

if [ ${MAIL} ]; then
  date| mailx -a ${TMP} -s ":${HOSTNAME}: ping netw ${NETW} [${PGM} v${VER}]" ${MAILTO}
  echo "`date` Mailed to ${MAILTO}"|tee -a ${LOG}
fi

rm ${TMP} ${TMP}.2
exit 0

