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

HOSTS="/etc/hosts"
IDRAC_NETW="172.16.22"

WEBDIR="/var/www/html/techlab/racks"
HTML="${WEBDIR}/index.html"
#HTML="${WEBDIR}/index.html"
FONTSIZE1=2
FONTSIZE2=5
BORDER=1
EXTURL="http://172.16.10.13/techlab/racks/"
TITLE="TechLab: Rack overview"
DIR=""
MAX_U=42
DO_PING=""
PING="/usr/sbin/ping -c 1 -W 2 "
NMAP="/usr/bin/nmap"

#===============================================
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 "  FONTSIZE1=${FONTSIZE1}"
echo "  FONTSIZE2=${FONTSIZE2}"
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> ${DIR} </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='6'> ${TITLE2} <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}

echo "  <TR WIDTH=100% >" >> ${HTML}
RACKS="01 02 03 04 05 06 07 08 09"

# 1st Rack-Row
for RACK in ${RACKS}
do
  echo -n "  ${RACK}"
  echo "    <TH><FONT SIZE=${FONTSIZE2}> 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}
# 1st Rack-Row
  for RACK in ${RACKS}
  do
    echo -n "  ${RACK}:${RU}"

    echo "    <TD>" >> ${HTML}
    HOST_INFO=`grep "R${RACK}U${RU_STR}" ${HOSTS}|awk '{print $2}'`
    HOST_IP=""
    if [ "${HOST_INFO}" != "" ]; then
      FONTCOLOR=""

      if [ ${DO_PING} ] && [ ${RU_STR} != "00" ]; then
        HOST_IP=`grep "R${RACK}U${RU_STR}" ${HOSTS}|awk '{print $1}'|head -1|grep "^[1-9]*"`
        if [ "${HOST_IP}" != "" ]; then
  	echo "    ${HOST_INFO}:${HOST_IP}"
          ${PING} ${HOST_IP}
  	  EC=${?}
    	  if [ ${EC} -eq 0 ]; then
            FONTCOLOR="darkgreen"
          else 
	    FONTCOLOR="red"
  	  fi
	  EC=""
        fi
      fi  # ${RU_STR} != "00"

      echo "      <FONT SIZE=${FONTSIZE1} COLOR=${FONTCOLOR}>${HOST_INFO}</FONT>" >> ${HTML}
      if [ "${HOST_IP}" != "" ]; then
        echo "      <FONT SIZE=${FONTSIZE1}><BR> ${HOST_IP}</FONT>" >> ${HTML}
      fi  # ${HOST_IP}" != ""
    fi  # HOST_INFO <> ""

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

  RU=`expr ${RU} - 1`

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

# ----------------------------------------------------------
# 2nd part
echo "  <TR WIDTH=100% >" >> ${HTML}
RACKS="00 00 00 10 11 12 13 14 15"
# 2nd Rack-Row
for RACK in ${RACKS}
do
  echo -n "  ${RACK}"
  echo "    <TH><FONT SIZE=${FONTSIZE2}> 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}
# 1st Rack-Row
  for RACK in ${RACKS}
  do
    echo "    <TD>" >> ${HTML}
#    echo -n "  ${RACK}:${RU}"

#    HOST_INFO=`grep "R${RACK}U${RU_STR}" ${HOSTS}|awk '{print $2}'`
    grep "R${RACK}U${RU_STR}" ${HOSTS}|awk '{print $2}'|while read HOST_INFO
    do

      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 [ "${HOST_IP}" != "" ]; then
            echo "    ${HOST_INFO}:${HOST_IP}"
            ${PING} ${HOST_IP}
  	    EC=${?}
    	    if [ ${EC} -eq 0 ]; then
              FONTCOLOR="darkgreen"
            else 
	      FONTCOLOR="red"
  	    fi
	    EC=""
          fi
        fi  # ${RU_STR} != "00"

      fi  # HOST_INFO}" != "" 

#      if [ "${HOST_IP}" != "" ]; then
#
#        ANSW=`${NMAP} ${HOST_IP} -p 443 |grep 443| grep open`
#        if [ "${ANSW}" != "" ]; then
#	  FONTCOLOR="darkgreen"
#          echo "  <FONT SIZE=${FONTSIZE1} COLOR=${FONTCOLOR}> <A HREF=\"https:\/\/${HOST_IP}\" target=_blank>${HOST_IP}</TD>" >> ${HTML}
#        else
#          echo "  <FONT SIZE=${FONTSIZE1} COLOR=${FONTCOLOR}> ${HOST_IP} </TD>" >> ${HTML}
#        fi  # ANSW

      echo "      <FONT SIZE=${FONTSIZE1} COLOR=${FONTCOLOR}>${HOST_INFO}</FONT>" >> ${HTML}
      if [ "${HOST_IP}" != "" ]; then
        echo "      <FONT SIZE=${FONTSIZE1}><BR> ${HOST_IP}</FONT>" >> ${HTML}
      fi  # ${HOST_IP}" != ""
      echo "      <BR>" >> ${HTML}
    done  # HOST_INFO

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

  done  # RACK

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

  RU=`expr ${RU} - 1`

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

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}


exit 0

