
#!/bin/sh
# File	: upd_dc-rack-view.sh
# By	: Maarten.deBoer@Atos.net, 2507xx
#(0.2),250731	: Upd.
#(0.3),250731	: ping added
#(0.4),250731	: Upd's
#(0.5),250731	: BGCOLOR
PGM=`basename $0|cut -d\. -f1`
VER="0.5"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RCFILE="${HOME}/etc/${PGM}.rc"

HOSTS="/etc/hosts"

WEBDIR="/var/www/html/techlab/racks"
HTML="${WEBDIR}/index.html"
FS_1=2
FS_2=5
FS_H=6
BORDER=1
EXTURL="http://172.16.10.13/techlab/racks/"
TITLE="TechLab: Rack overview"
HEADER="<A HREF='/techlab'>TechLab:</A> Rack overview"

DIR=""
MAX_U=42
DO_PING=1
PING="/usr/sbin/ping -c 1 -W 1 "
NMAP="/usr/bin/nmap"
PARTS="1 2"
RACKS[1]="01 02 03 04 05 06 07 08 09"
RACKS[2]="00 00 00 10 11 12 13 14 15"




#===============================================
echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}

if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Reading ..."|tee -a ${LOG}
  . ${RCFILE}
fi  # RCFILE
echo "  BORDER=${BORDER}"
echo "  CHK_SRV=${CHK_SRV}"
echo "  FS_1=${FS_1}"
echo "  FS_2=${FS_2}"
echo "  MAILTO=${MAILTO}"
echo "  WEBDIR=${WEBDIR}"
echo "  EXTURL=${EXTURL}"
echo "  TITLE=${TITLE}"
sleep 1

if [ ! -d ${WEBDIR} ]; then
  echo "  NO WEBDIR (${WEBDIR}) found. Exiting ..."|tee -a ${LOG}
  exit 4
fi


# ---------------------------------------------------------
# Header
TITLE2="${TITLE} based on /etc/hosts :"
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> ${TITLE} </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%' cellspacing='0'>" >> ${HTML}
echo "<TR WIDTH=100% HEIGHT=40px>" >> ${HTML}
echo "  <TD bgColor=#0066A1>" >> ${HTML}
echo "    <FONT COLOR=white face='verdana' size=${FS_H}> ${HEADER} <BR> </FONT>" >> ${HTML}
echo "    <FONT COLOR=white face='verdana' size=${FS_2}> <CENTER> Based on /etc/hosts <BR> </FONT>" >> ${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=${BORDER} WIDTH='100%' cellspacing='0'>" >> ${HTML}

for PART in ${PARTS}
do
  echo "    PART=${PART} RACKS=${RACKS[${PART}]}"
#  sleep 1

  echo "  <TR WIDTH=100% >" >> ${HTML}
# Headers
  for RACK in ${RACKS[${PART}]}
  do
    echo -n "  R:${RACK}"
    echo "    <TH><FONT SIZE=${FS_2}> Rack: ${RACK} </TH>" >> ${HTML}
  done  # RACK
  echo "  </TR>" >> ${HTML}
  echo ""

  RU=${MAX_U}
  while [ ${RU} -ge 0 ]
  do
    RU_STR="${RU}"
    if [ ${RU} -le 9 ]; then
      RU_STR="0${RU}"
    fi  # RU

    echo "  <TR WIDTH=100% >" >> ${HTML}

    for RACK in ${RACKS[${PART}]}
    do
#    echo -n "  ${RACK}:${RU}"

      HOSTS_LINES_CNT=0
      HOSTS_LINES_OK=0
      cp /dev/null ${TMP}.html
      echo ${HOSTS_LINES_CNT} > ${TMP}.cnt
      echo ${HOSTS_LINES_OK} > ${TMP}.ok

      grep "R${RACK}U${RU_STR}" ${HOSTS}|grep -v "^#"|awk '{print $2}'|while read HOST_INFO
      do
        HOSTS_LINES_CNT=`expr ${HOSTS_LINES_CNT} + 1`
        HOST_IP=""
        if [ "${HOST_INFO}" != "" ]; then
          FONTCOLOR=""
          HOST_IP=`grep "${HOST_INFO}" ${HOSTS}|grep -v ^#|awk '{print $1}'|grep "^[1-9]*"`
          echo "HOST_INFO=${HOST_INFO} HOST_IP=${HOST_IP} "

#          if [ ${DO_PING} ] && [ ${RU_STR} != "00" ]; then
          if [ ${DO_PING} ]; then
            if [ "${HOST_IP}" != "" ]; then
              echo "    ${HOST_INFO}:${HOST_IP}"
              ${PING} ${HOST_IP}
  	      EC=${?}
    	      if [ ${EC} -eq 0 ]; then
                FONTCOLOR="darkgreen"
		HOSTS_LINES_OK=`expr ${HOSTS_LINES_OK} + 1`
              else 
	        FONTCOLOR="red"
  	      fi
	      EC=""
            fi  # ${HOST_IP}" != ""
          fi  # ${RU_STR} != "00"

          echo "      <FONT SIZE=${FS_1} COLOR=${FONTCOLOR}>${HOST_INFO}</FONT>" >> ${TMP}.html

          if [ "${HOST_IP}" != "" ]; then
            if [ ${DO_PING} ]; then
              ANSW=`${NMAP} ${HOST_IP} -p 443 |grep 443| grep open`
              if [ "${ANSW}" != "" ]; then
                echo "      <FONT SIZE=${FS_1} COLOR=${FONTCOLOR}> (<A HREF=\"https:\/\/${HOST_IP}\" target=_blank>${HOST_IP}</A>) </FONT>" >> ${TMP}.html
              else
                echo "      <FONT SIZE=${FS_1} COLOR=${FONTCOLOR}> (${HOST_IP}) </FONT> <BR>" >> ${TMP}.html
              fi  # ANSW
	    else
              echo "      <FONT SIZE=${FS_1}> (${HOST_IP}) </FONT>" >> ${TMP}.html
            fi  # ${DO_PING}

          fi  # ${HOST_IP}" != ""
          echo "      <BR>" >> ${TMP}.html

        fi  # HOST_INFO
        echo ${HOSTS_LINES_CNT} > ${TMP}.cnt
        echo ${HOSTS_LINES_OK} > ${TMP}.ok
      done  # HOST_INFO

      HOSTS_LINES_CNT=`cat ${TMP}.cnt`
      HOSTS_LINES_OK=`cat ${TMP}.ok`
      echo "HOSTS_LINES_CNT=${HOSTS_LINES_CNT} HOSTS_LINES_OK=${HOSTS_LINES_OK}"
      if [ ${HOSTS_LINES_CNT} -eq 0 ]; then
        echo "    <TD>" >> ${HTML}
      else
        if [ ${HOSTS_LINES_CNT} -eq ${HOSTS_LINES_OK} ]; then
          echo "    <TD BGCOLOR='lightgreen'>" >> ${HTML}
	else
          echo "    <TD BGCOLOR='yellow'>" >> ${HTML}
	fi
      fi
      cat ${TMP}.html >> ${HTML}
      echo "    </TD>" >> ${HTML}

    done  # RACK
    echo "  </TR>" >> ${HTML}

    RU=`expr ${RU} - 1`

  done   # RU
  echo "  </TR>" >> ${HTML}

  echo "  <TR WIDTH=100% >" >> ${HTML}
  for RACK in ${RACKS[${PART}]}
  do
    echo -n "  R:${RACK}"
    echo "    <TH><FONT SIZE=${FS_2}> Rack: ${RACK} </TH>" >> ${HTML}
  done  # RACK
  echo "  </TR>" >> ${HTML}

  echo "  <TR WIDTH=100% >" >> ${HTML}
  for RACK in ${RACKS[${PART}]}
  do
    echo "    <TD bgColor=#0066A1>" >> ${HTML}
  done  # RACK
  echo "  </TR>" >> ${HTML}

  echo ""

done  # PARTS

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

#----------------------------------------------------------------
# Footer
echo "<TABLE BORDER=0 WIDTH='100%' cellspacing='0'>" >> ${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}

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

