
#!/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=1
PING="/usr/sbin/ping -c 1 -W 1 "
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 "  <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

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 "<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=${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}
    for RACK in ${RACKS[${PART}]}
    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}|grep -v "^#"|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 [ ${DO_PING} ]; 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  # ${HOST_IP}" != ""
          fi  # ${RU_STR} != "00"

#          if [ ${DO_PING} ] && [ "${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
#
#          fi  # ${HOST_IP}" != ""


          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}

        fi  # HOST_INFO

      done  # HOST_INFO

      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=${FONTSIZE2}> 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}


exit 0

