
#!/bin/sh
# File	: upd_rac_info.sh
# By	: Maarten.deBoer@Atos.net, 240213,250710
# Subject	: Script to update the Dell iDRAC Web-page
#(0.2),250710	: Add ping to iDRAC-IP
#(0.3),250711	: Update
PGM=`basename $0|cut -d\. -f1`
VER="0.3"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RCFILE="${HOME}/etc/${PGM}.rc"
SSH="/usr/bin/ssh -n"
USER="nl19471"
FS_1=5
FS_H=6
HEADER="<A HREF='/techlab'>TechLab:</A> Dell/iDRAC page"

WEBUPD=1
BASEDIR=""
WEBDIR="/var/www/html/techlab/idrac"
HTML="${BASEDIR}/${WEBDIR}/index.html"
EXTURL="http://10.90.32.23/techlab/idrac/"
TITLE="TechLab: Dell/iDRAC page"
RAC_DIR="/iDRAC-info"

SYSTEMS="${HOME}/etc/dell.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}>IP-ADDR (Name):</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>Power state:</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>System Model:</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>Service Tag:</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>CPU:</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>Mem.Size:</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>RAC Name:</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>iDRAC (FirmWare):</TH>" >> ${HTML}
echo "    <TH><FONT SIZE=${FS_1}>(OS) Hostname:</TH>" >> ${HTML}
#echo "    <TH><FONT SIZE=${FS_1}>Dev.Info NICs:</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}'`
#  COMMENTS=`echo ${LINE}|cut -d\# -f2-`
  echo "  NAME=${NAME} IP_ADDR=${IP_ADDR}"
  RAC_BGC=""
  INFO_BGC=""
  COMMENTS=""
  PWR_STATE=""
  DNS_RAC_NAME=""
  FW_VERSION=""
  SYSTEM_MODEL=""
  POP_CPU_SOCKETS=""
  SYSTEM_BIOS=""
  HOST_NAME=""
  DEV_NIC=""
  ERROR=""

  ANSW=`ls -1 ${RAC_DIR}/${NAME}/*getsysinfo*`
  EC=${?}
  if [ ${EC} -ne 0 ]; then
    PWR_STATE="No iDRAC info"
    INFO_BGC="lightblue"
  else
    DNS_RAC_NAME=`grep "DNS RAC Name" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\= -f2`
    FW_VERSION=`grep "Firmware Version" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\= -f2`
    SYSTEM_MODEL=`grep "System Model" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\= -f2`
    SYSTEM_BIOS=`grep "System BIOS Version" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\= -f2`
    SERVICE_TAG=`grep "Service Tag" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\= -f2`
    POP_CPU_SOCKETS=`grep "PopulatedCPUSockets" ${RAC_DIR}/${NAME}/*hwinventory*|tail -1|cut -d\= -f2`
    TOTAL_MEM_SIZE=`grep "SysMemTotalSize" ${RAC_DIR}/${NAME}/*hwinventory*|tail -1|cut -d\= -f2`
    HOST_NAME=`grep "Host Name" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\= -f2`
#    DEV_NIC=`grep "DeviceDescription" ${RAC_DIR}/${NAME}/*hwinventory*|grep NIC|cut -d\= -f2`

    ERROR=`grep "ERROR" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\: -f2-`
    if [ "${ERROR}" != "" ]; then
      SYSTEM_MODEL="ERROR"
      HOST_NAME="${ERROR}"
      INFO_BGC="yellow"
    fi  # ERROR
  fi  # EC = 0

  ping -c 1 -W 2 ${IP_ADDR}
  ECP=${?}
  if [ ${ECP} -eq 0 ]; then
    RAC_BGC="lightgreen"
    PWR_STATE=`grep "Power Status" ${RAC_DIR}/${NAME}/*getsysinfo*|tail -1|cut -d\= -f2|awk '{print $1}'`
  else
    RAC_BGC="orange"
    INFO_BGC="orange"
    PWR_STATE="No iDRAC connection ?"
  fi  # ECP <> 0

  if [ "${PWR_STATE}" == "ON" ]; then
    INFO_BGC="lightgreen"
  fi
  if [ "${PWR_STATE}" == "OFF" ]; then
    INFO_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>) -- ${COMMENTS} </FONT></TD>" >> ${HTML}
    echo "    <TD BGCOLOR=${RAC_BGC}><FONT SIZE=${FS_1}> <A HREF=\"//${IP_ADDR}/\" target="_blank">${IP_ADDR}</A> (${NAME}) ${COMMENTS} </FONT></TD>" >> ${HTML}
    echo "    <TD BGCOLOR=${INFO_BGC}><FONT SIZE=${FS_1}> ${PWR_STATE} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${SYSTEM_MODEL} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${SERVICE_TAG} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${POP_CPU_SOCKETS} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${TOTAL_MEM_SIZE} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${DNS_RAC_NAME} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${FW_VERSION} </FONT></TD>" >> ${HTML}
    echo "    <TD><FONT SIZE=${FS_1}> ${HOST_NAME} </FONT></TD>" >> ${HTML}
#    echo "    <TD><FONT SIZE=${FS_1}> ${DEV_NIC} </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

