
#!/bin/sh
# File	: upd_esx_info.sh
# By	: Maarten.deBoer@Atos.net, 240213
# Subject	: Script to update the VMware ESX Web-page
#(0.2),240215	: Add OS-info
#(0.3),240329	: Add 'esxcli system version get|', # ESX_VER, HOST_MODEL
#(0.4),240408	: Rename to FS_1, Add FS_H, Add RCFILE
#(0.5),240416	: Add URL
#(0.6).240523	: Add more : "esxcli"-info
PGM=`basename $0|cut -d\. -f1`
VER="0.6"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RCFILE="${HOME}/etc/${PGM}.rc"
SSH="/usr/bin/ssh -n"
USER="nl19471"
VMW_PWD="${HOME}/etc/vmware.pwd"
FS_1=5
FS_H=5
HEADER="<A HREF='/techlab'>TechLab:</A> VMware/ESX page"

WEBUPD=1
BASEDIR=""
WEBDIR="/var/www/html/techlab/vmware"
HTML="${BASEDIR}/${WEBDIR}/index.html"
EXTURL="http://10.90.32.23/techlab/vmware/"
TITLE="TechLab: VMware/ESX page"

SYSTEMS="${HOME}/etc/vmware.hosts"
FILTER="[?]*"

if [ "${1}" != "" ]; then
  FILTER="${1}"
fi

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

touch ${TMP}

if [ ! -f ${SYSTEMS} ]; then
  echo "  NO SYSTEMS (${SYSTEMS}) found. Exiting ..."|tee -a ${LOG}
  exit 4
fi
if [ ${WEBUPD} ] && [ ! -d ${WEBDIR} ]; then
  echo "  NO WEBDIR (${WEBDIR}) found. Exiting ..."|tee -a ${LOG}
  exit 5
fi
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> ${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 "    <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=${FS_1}> Host: </TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}> Model: </TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}> ESX info: </TH>" >> ${HTML}
echo "  </TR>" >> ${HTML}
fi  # WEBUPD


cat ${SYSTEMS}|grep -v ^#|egrep "${FILTER}"|while read LINE
do
  IP_ADDR=`echo ${LINE}|awk '{print $1}'`
  NAME=`echo ${LINE}|awk '{print $2}'`
  echo "  NAME=${NAME} IP_ADDR=${IP_ADDR}"

# Check/ping IP_ADDR
  UPTIME=""
  OS_INFO=""
  VM_CNT=""
  ESX_MEM_GB=""
#  ESX_VER=""
  HOST_MODEL=""
  ping -c 1 -W 2 ${IP_ADDR}
  ECP=${?}
  if [ ${ECP} -eq 0 ]; then
    HOST_MODEL=`sshpass -f ${VMW_PWD} ${SSH} ${USER}@${IP_ADDR} "esxcfg-info -F perl -w| grep product_name" | cut -d\> -f2|sed 's/\"//g'|sed 's/,//g'`
    UPTIME=`sshpass -f ${VMW_PWD} ${SSH} ${USER}@${IP_ADDR} "uptime"`
    ESX_MEM_B=`sshpass -f ${VMW_PWD} ${SSH} ${USER}@${IP_ADDR} "esxcli hardware memory get"|grep -i "physical memory"|cut -d\: -f2| awk '{print $1}'`
    ESX_MEM_GB=`expr ${ESX_MEM_B} \/ 1024 \/ 1024 \/ 1024`

    VM_CNT=`sshpass -f ${VMW_PWD} ${SSH} ${USER}@${IP_ADDR} "esxcli vm process list"|grep -i "display name"|cut -d\: -f2| awk '{print $1}'|wc -l`
    OS_INFO=`sshpass -f ${VMW_PWD} ${SSH} ${USER}@${IP_ADDR} "uname -vr"`
#    ESX_VER=`sshpass -f ${VMW_PWD} ${SSH} ${USER}@${IP_ADDR} "esxcli system version get"|grep -i version`
  else
    OS_INFO="Down ?"
  fi

  IP_BGC="orange"
  if [ ${ECP} -eq 0 ]; then
    IP_BGC="lightgreen"
  fi
  if [ "${IP_ADDR}" == "" ]; then
    IP_BGC="yellow"
  fi

  if [ ${WEBUPD} ]; then
    echo "  <TR WIDTH=100% >" >> ${HTML}
    echo "    <TD BGCOLOR=${IP_BGC}><FONT SIZE=${FS_1}> ${NAME} (<A HREF=\"//${IP_ADDR}/\" target="_blank">${IP_ADDR}</A>) </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${HOST_MODEL} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${UPTIME} <BR> " >> ${HTML}
    echo "      Mem: ${ESX_MEM_GB}GB VMs:${VM_CNT}<BR>" >> ${HTML}
    echo "      OS: ${OS_INFO} <BR>" >> ${HTML}
    echo "    </FONT></TD>" >> ${HTML}
    echo "  </TR>" >> ${HTML}
  fi  # WEBUPD

  echo "  ${NAME} (${IP_ADDR}) = ${INFO}"

done  # LINE

if [ ${WEBUPD} ]; then
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}
fi  # WEBUPD



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

