
#!/bin/sh
# File	: upd_cx-info.sh
# By	: Maarten.deBoer@Atos.net, 240212
# Subject	: Script to Update CX-info-web-page
#(0.2),240212	: Add * version-file
#(0.3),240213	: Added FONTSIZE, ping CX_IPADDR
#(0.4),240213	: Mod BGcolors
#(0.5),240215	: Mod's
#(0.6),240313	: Add lightblue (hostname <> IP-suffix)
PGM=`basename $0|cut -d\. -f1`
VER="0.6"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RCFILE="${HOME}/etc/${PGM}.rc"
FONTSIZE1=6
FONTSIZE2=5
REMARKS=""

#PAGEDIR="/var/www/htlm/techlab"
#PAGE="${PAGEDIR}/index.html"

#CX_HOSTS="${HOME}/etc/system_ping.hosts"
CX_HOSTS="${HOME}/etc/cisco.hosts"
CX_DIR="/CX-info"
FILTER="CX"

BASEDIR=""
WEBDIR="/var/www/html/techlab/cx"
HTML="${BASEDIR}/${WEBDIR}/index.html"
EXTURL="http://10.90.32.23/techlab/cx/"
TITLE="TechLab: Cisco Switch page"

UPD_SUBDIR_PAGE()
{
TITLE2="${TITLE} : ${DIR}"
echo "<!DOCTYPE html>" > ${HTML2}
echo "<HTML>" >> ${HTML2}
echo "<HEAD>" >> ${HTML2}
echo "<META charset='UTF-8'>" >> ${HTML2}
echo "<META content=Maarten de Boer name=AUTHOR>" >> ${HTML2}
echo "<TITLE> ${DIR} </TITLE>" >> ${HTML2}
echo "<basefont face='verdana'>" >> ${HTML2}
echo "</HEAD>" >> ${HTML2}
echo "<BODY aLink=red bgColor=#D3D0D3 link=red text=#000000 vLink=#ff0000>" >> ${HTML2} 

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

#----------------------------------------------------------------
echo "<TABLE BORDER=1 WIDTH='100%' cellspacing='0'>" >> ${HTML2}
echo "  <TR WIDTH=100% >" >> ${HTML2}
echo "    <TH><FONT SIZE=${FONTSIZE2}> PORT: </TH>" >> ${HTML2}
echo "    <TH><FONT SIZE=${FONTSIZE2}> NAME: </TH>" >> ${HTML2}
echo "    <TH><FONT SIZE=${FONTSIZE2}> STATUS: </TH>" >> ${HTML2}
echo "    <TH><FONT SIZE=${FONTSIZE2}> VLAN: </TH>" >> ${HTML2}
echo "    <TH><FONT SIZE=${FONTSIZE2}> DUPLEX: </TH>" >> ${HTML2}
echo "    <TH><FONT SIZE=${FONTSIZE2}> SPEED: </TH>" >> ${HTML2}
echo "    <TH><FONT SIZE=${FONTSIZE2}> TYPE: </TH>" >> ${HTML2}
echo "  </TR>" >> ${HTML2}

LAST_STATUS_FILE=`ls -1 ${CX_DIR}/${DIR}/*interface-status*| tail -1`
echo "    LAST_STATUS_FILE=${LAST_STATUS_FILE}"

cat ${LAST_STATUS_FILE}|grep -vi port|while read LINE2
do
  PORT=`echo ${LINE2}|awk '{print $1}'`
  NAME=`echo ${LINE2}|awk '{print $2}'`
  STATUS=`echo ${LINE2}|awk '{print $3}'`
  VLAN=`echo ${LINE2}|awk '{print $4}'`
  DUPLEX=`echo ${LINE2}|awk '{print $5}'`
  SPEED=`echo ${LINE2}|awk '{print $6}'`
  TYPE=`echo ${LINE2}|awk '{print $7}'`

#  echo "      STATUS=${STATUS}|"

  STATUS_BGC=""
  case ${STATUS} in
    "connected") STATUS_BGC="lightgreen" ;;
    "disabled") STATUS_BGC="yellow" ;;
    "notconnect") STATUS_BGC="orange" ;;
  esac
  NAME_BGC=""
  ANSW=`echo ${NAME}|grep -v '^-'`
  if [ "${ANSW}" != "" ]; then
    NAME_BGC=${STATUS_BGC}
  fi

  if [ "${STATUS}" != "" ]; then
    echo "  <TR WIDTH=100% >" >> ${HTML2}
    echo "    <TD><FONT SIZE=${FONTSIZE2}> ${PORT} </TD>" >> ${HTML2}
    echo "    <TD BGCOLOR=${NAME_BGC}><FONT SIZE=${FONTSIZE2}> ${NAME} </TD>" >> ${HTML2}
    echo "    <TD BGCOLOR=${STATUS_BGC}><FONT SIZE=${FONTSIZE}> ${STATUS} </TD>" >> ${HTML2}
    echo "    <TD><FONT SIZE=${FONTSIZE2}> ${VLAN} </TD>" >> ${HTML2}
    echo "    <TD><FONT SIZE=${FONTSIZE2}> ${DUPLEX} </TD>" >> ${HTML2}
    echo "    <TD><FONT SIZE=${FONTSIZE2}> ${SPEED} </TD>" >> ${HTML2}
    echo "    <TD><FONT SIZE=${FONTSIZE2}> ${TYPE} </TD>" >> ${HTML2}
    echo "  </TR>" >> ${HTML2}
  fi  # STATUS <> ""
done  # LINE2

echo "</TABLE>" >> ${HTML2}
#----------------------------------------------------------------

echo "<TABLE BORDER=0 WIDTH='100%' cellspacing='0'>" >> ${HTML2}
echo "<TR WIDTH=100% > " >> ${HTML2}
echo "  <TD bgColor=#0066A1 > " >> ${HTML2}
echo "    <FONT COLOR=white face='Verdana' size='1'>" >> ${HTML2}
echo "      <CENTER>" >> ${HTML2}
echo "Contact: |Content Owner: <A HREF="mailto:Maarten.deBoer@Atos.net">Maarten de Boer</A> |Last Update: `date`|[${PGM} v${VER}]<BR>" >> ${HTML2}
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." >> ${HTML2}
echo "      </CENTER>" >> ${HTML2}
echo "    </FONT>" >> ${HTML2}
echo "  </TD>" >> ${HTML2}
echo "</TR>" >> ${HTML2}
echo "</TABLE>" >> ${HTML2}

echo "</BODY>" >> ${HTML2}
echo "</HTML>" >> ${HTML2}
}
# UPD_SUBDIR_PAGE


echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using ..."|tee -a ${LOG}
  . ${RCFILE}
fi
echo "  BASEDIR=${BASEDIR}"
echo "  WEBDIR=${WEBDIR}"
echo "  HTML=${HTML}"
echo "  CX_HOSTS=${CX_HOSTS}"
echo "  CX_DIR=${CX_DIR}"
echo "  TITLE=${TITLE}"
sleep 1

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

touch ${TMP}

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='6'> ${TITLE} <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=1 WIDTH='100%' cellspacing='0'>" >> ${HTML}

echo "  <TR WIDTH=100% >" >> ${HTML}
echo "    <TH><FONT SIZE=${FONTSIZE1}> CX: </TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FONTSIZE1}> Version info: <BR> </FONT>" >> ${HTML}
echo "    <FONT SIZE=${FONTSIZE2}> * Switch | Ports | Model | SW Version | SW Image</FONT> </TH>" >> ${HTML}
echo "  </TR>" >> ${HTML}

ls -1 ${CX_DIR}|grep "${FILTER}"|while read DIR
do
  IP_ADDR=`grep "${DIR}" ${CX_HOSTS}|grep -v ^#|awk '{print $1}'`
  echo "    ${DIR} (${IP_ADDR})"
  sleep 1

  ECP=255
  if [ "${IP_ADDR}" != "" ]; then
# Check/ping IP_ADDR
    ping -c 1 -W 2 ${IP_ADDR}
    ECP=${?}
  fi  # 
  IP_BGC="orange"
  if [ ${ECP} -eq 0 ]; then
    IP_BGC="lightgreen"
  fi
  if [ "${IP_ADDR}" == "" ]; then
    IP_BGC="yellow"
  fi

# lightblue
  CX_NR=`echo ${DIR}|grep CX|sed 's/CX//g'|sed 's/^0//g'`
  IP_SUFFIX=`echo ${IP_ADDR}|cut -d\. -f4`
echo "CX_NR=${CX_NR} IP_SUFFIX=${IP_SUFFIX}"
sleep 1

  if [ "${CX_NR}" != "${IP_SUFFIX}" ]; then
    IP_BGC="lightblue"
    REMARKS="CXname <> IP-suffix"
  fi

# ---------------------------------
# Sub.dir
  SUBDIR="${WEBDIR}/${DIR}"
  if [ ! -d ${SUBDIR} ]; then
    mkdir ${SUBDIR}
  fi  # ! -d
  HTML2="${SUBDIR}/index.html"
  UPD_SUBDIR_PAGE
# ---------------------------------

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

  if [ -d ${SUBDIR} ]; then
    echo "    <TD BGCOLOR=${IP_BGC}><FONT SIZE=${FONTSIZE1}>" >> ${HTML}
    echo "    <A HREF=\"${DIR}\">${DIR}</A> (${IP_ADDR})" >> ${HTML}
    echo "    </TD>" >> ${HTML}
  else
    echo "    <TD><FONT SIZE=${FONTSIZE1}>" >> ${HTML}
    echo "    ${DIR} (${IP_ADDR}) ${REMARKS}" >> ${HTML}
    echo "    </TD>" >> ${HTML}
  fi

  echo "    <TD><FONT SIZE=${FONTSIZE1}>" >> ${HTML}
  if [ ${ECP} -eq 0 ]; then
# IOS version
#    VERSION=`grep -i " ios " ${CX_DIR}/${DIR}/CX*version*|tail -1`
    VER_INFO=`grep -i "*" ${CX_DIR}/${DIR}/CX*version*|cut -d\: -f2-|tail -1`
  else
    VER_INFO="No answer on ping"
  fi
  echo "    <FONT SIZE=${FONTSIZE2}>${VER_INFO}</FONT>" >> ${HTML}
  echo "    </TD>" >> ${HTML}

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




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

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}

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

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

