
#!/bin/ksh
# File	: upd_asup_status.sh
# By	: Maarten.deBoer@Atos.net, 2015-08-05
# Subject	: Script to update web-file for ASUP status
# set -x
#(0.2)	:With some coloring
#(0.3)	: Some more coloring
#(0.4)	: Added ASUP ack DaTi
#(0.5)	: Added search for COUNTRY in DATABASE
#(0.6)	: Added file country-asup-data.csv (in stead of TMP)
#(0.7)	: Mod country
#(0.8)	: Mode AFSP & ASUP country
#(0.9)	: Add Legenda
#(0.10)	: CNT empty DB-country
#(0.11) : Mod. ASUP colors
#(0.12)	: Mod. green -> lightgreen & cont ASUP %
#(0.13)	: Update autosupport at page
#(0.14),170607	: Update colors & add PGM & VER at bottom
#(0.15),170621	: Changed collumns
#(0.16),171026	: Upd top
#(0.17),171206	: Changed to own ASUPDATADIR (.asc) +  location
#(0.18),171207	: Mod COUNTRYDATA -> COUNTRY2DATA
#(0.19),171227	: Mod; Check BASEDIR & process OLD-ASUP-file (for auto-remove)
#set -x

PGM="`basename $0|cut -d\. -f1`"
VER="0.19"
TMP="/tmp/${PGM}.$$"

BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
LOG="${BASEDIR}/log/${PGM}.log"
ASUPDBDIR="${BASEDIR}/data/database"
DBFILENAME=""

ASUPDATADIR="${BASEDIR}/data/asup"

CSVIN="${BASEDIR}/data/asup-data.csv"
#ASUPSTATUSPAGE="${BASEDIR}/html/asup-status.html"
ASUPSTATUSPAGE="/appl/mdr/www/afsp/asup-status.html"

#ASUPACKDIR="/appl/mdr/mdrglob/asup-ack/"
ASUPACKDIR="/appl/asup/ack/"

COUNTRY2ASUP="${BASEDIR}/data/country2asup.csv"
ASUP2COUNTRY="${BASEDIR}/data/asup2country.csv"
ASUPOLDFILERS="${BASEDIR}/data/asup-old-filers.csv"

COUNTRYDIR="`echo ${BASEDIR}| cut -d\/ -f6`"

if [ ${COUNTRYDIR} != "asup" ]; then
  echo "  COUNTRYDIR= NOT "asup". Wrong DIR. Exiting ..."
  exit 3
fi

echo "`date` ${PGM} v${VER} started." | tee -a ${LOG}
echo "BASEDIR=${BASEDIR}"
echo "COUNTRYDIR=${COUNTRYDIR}"
echo "COUNTRY2ASUP=${COUNTRY2ASUP}"
echo "ASUP2COUNTRY=${ASUP2COUNTRY}"
echo "ASUPOLDFILERS=${ASUPOLDFILERS}"
sleep 1

touch ${TMP}

# empty ASUPOLDFILERS
cp /dev/null ${ASUPOLDFILERS}

# Read Functions file
source ./afsp-db_functions.sh
DB_FUNC_VER

## Collect data from all filers and mail
#rm ${CSVIN}
#cat ${ASUPDATADIR}/*.csv >> ${TMP}
#cat ${TMP}|sort >> ${CSVIN}
##date|mailx -a ${CSVIN} -s "[${PGM} v${VER}]" maarten.deboer@atos.net


echo "<!DOCTYPE html>" > ${ASUPSTATUSPAGE}
echo "<HTML>" >> ${ASUPSTATUSPAGE}
echo "<HEAD>" >> ${ASUPSTATUSPAGE}
echo "<META charset='UTF-8'>" >> ${ASUPSTATUSPAGE}
echo "<META content=Maarten de Boer name=AUTHOR>" >> ${ASUPSTATUSPAGE}
echo "<TITLE>AFSP:asup-status</TITLE>" >> ${ASUPSTATUSPAGE}
echo "<basefont face='verdana'>" >> ${ASUPSTATUSPAGE}
echo "</HEAD>" >> ${ASUPSTATUSPAGE}

echo "<BODY aLink=red bgColor=#D3D0D3 link=red text=#000000 vLink=#ff0000>" >> ${ASUPSTATUSPAGE}

echo "<TABLE BORDER=0 WIDTH='100%'>" >> ${ASUPSTATUSPAGE}

echo "<TR WIDTH=100% HEIGHT=40px>" >> ${ASUPSTATUSPAGE}
echo "  <TD bgColor=#0066A1>" >> ${ASUPSTATUSPAGE}
echo "    <FONT COLOR=white face='verdana' size='5'> <B> <A HREF="index.html">Filer</A> ASUP (by mail/smtp) status of global:</B> </FONT>" >> ${ASUPSTATUSPAGE}
echo "    <BR>" >> ${ASUPSTATUSPAGE}
echo "    <FONT COLOR=white face='verdana' size='1'> Done by adding mdrglob@msssyscol01.bcklan.ao-srv.com at (for 7-mode>) 'options autosupport.partner.to' and (for cDOT::>) 'system node autosupport modify -partner-address' </FONT> " >> ${ASUPSTATUSPAGE}
echo "    <FONT COLOR=yellow face='verdana' size='1'> To sanitize (erase all customer and/or site specific data) ASUPs: <A HREF="https://mysupport.netapp.com/NOW/knowledge/docs/olio/autosupport/asup_faqs.shtml#min1" TARGET=\"_blank\">See NetApp-support-site</A> </FONT>" >> ${ASUPSTATUSPAGE}
echo "    <DIV align=left><FONT COLOR=white face='verdana' size='-3'> Update: `date` </FONT></DIV>" >> ${ASUPSTATUSPAGE}
echo "    <DIV align=right>" >> ${ASUPSTATUSPAGE}
echo "    <FONT COLOR=white face='verdana' size='-3'> For internal use. (c) Atos BTN 2015 </B> </FONT>" >> ${ASUPSTATUSPAGE}
echo "    </DIV>" >> ${ASUPSTATUSPAGE}
echo "  <TD>" >> ${ASUPSTATUSPAGE}
echo "</TR>" >> ${ASUPSTATUSPAGE}

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

#echo "  <TABLE BORDER=1 WIDTH='100%'>" >> ${ASUPSTATUSPAGE}
echo "  <TABLE BORDER=1>" >> ${ASUPSTATUSPAGE}

echo "<TR>" >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Country:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Serial Number: <BR> _ = SystemID </B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Name:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Last ASUP DaTi:</B> </TD> " >> ${ASUPSTATUSPAGE}
#echo "  <TD> <FONT face='verdana' size=1> <B>ASUP Ack DaTi:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>OS Version:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Partner:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>SNMP location:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>SNMP contact:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "</TR>" >> ${ASUPSTATUSPAGE}

SKIP="no"
if [ ${SKIP} ]; then
echo "Collecting of all countries; hostname & ser.nr ..."
echo "# COUNTRY;DB_CONTROLER_NAME;DB_SERIAL_NUMBER;DB_SYSTEM_ID;" > ${COUNTRY2ASUP}

echo "Getting COUNTRY data ..."
sleep 1

for COUNTRY in `cd /appl/mdr/mdrglob/afsp/; ls -1d ??`
do
  echo -n " ${COUNTRY} "
  for DBFILE in `ls -1 /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database/[_0-9]*.asc`
  do
    DB_READ ${DBFILE}
	echo "${COUNTRY};${DB_CONTROLER_NAME};${DB_SERIAL_NUMBER};${DB_SYSTEM_ID};" >> ${COUNTRY2ASUP}
  done  # DBFILE
done  # COUNTRY
echo ""
fi  # SKIP


EMPTY_DB_CNT=0
CNT=0
CNTDAY=0
CNTMON=0
CNTYR=0
CNTMORE=0

# MAIN loop

echo "MAIN loop (processing ASUP-DB) ..."
sleep 1
echo "# COUNTRY;DB_CONTROLER_NAME;DB_SERIAL_NUMBER;DB_SYSTEM_ID;" > ${ASUP2COUNTRY}

for DBFILE in `ls -1 ${ASUPDBDIR}/[_0-9]*.asc`
do
  DB_READ ${DBFILE}

#  NAME="${DB_CONTROLER_NAME}"
#  LOC="${DB_SNMP_LOCATION}"
#  USAGE=""
#  OSVERSION="${DB_OS_VERSION}"
#  FWVERSION=""
#  SERNR="${DB_SERIAL_NUMBER}"
#  SYSID="${DB_SYSTEM_ID}"
#  PARTNER="${DB_PARTNER_HOSTNAME}"
#  SNMPLOC="${DB_SNMP_LOCATION}"
#  SNMPCONTACT="${DB_SNMP_CONTACT}"
#  LASTASUPDATI="${DB_ASUP_GENERATED_ON}"

#  ACKFILEDATI=""
# Does NOT work (any more)
## ASUP-Ack's
## Get the filename of the last Ack
#  FILE="`grep -i hostname ${ASUPACKDIR}/*| grep ${FILER}|cut -d\: -f1|sort|tail -1`"
## Get the date&time of the last ack-file
#  if [ "${FILE}" != "" ]; then
#    ACKFILEDATI="`stat -c %y ${FILE}|cut -d\. -f1`"
#  fi

# echo "  DB_ASUP_GENERATED_ON=${DB_ASUP_GENERATED_ON} (${DB_FILE}|${COUNTRY}|${DB_SERIAL_NUMBER}|${DB_CONTROLER_NAME}|${DB_SYSTEM_ID})"

  DATICOL=""
  YEAR="`date +%Y`"
  ANSW="`echo "${DB_ASUP_GENERATED_ON}"|grep \" ${YEAR}\"`"
  if [ "${ANSW}" = "" ]; then
    DATICOL="red"
    let "CNTMORE= ${CNTMORE} + 1"
  fi
  ANSW="`echo "${DB_ASUP_GENERATED_ON}"|grep \" ${YEAR}\"`"
  if [ "${ANSW}" != "" ]; then
    DATICOL="orange"
    let "CNTYR= ${CNTYR} + 1"
  fi
  MONTH="`date +%b`"
  ANSW="`echo "${DB_ASUP_GENERATED_ON}"|grep \" ${YEAR}\"|grep \" ${MONTH}\"`"
  if [ "${ANSW}" != "" ]; then
    DATICOL="yellow"
    let "CNTMON= ${CNTMON} + 1"
  fi
  DAY="`date +%d`"
  ANSW="`echo "${DB_ASUP_GENERATED_ON}"|grep \" ${YEAR}\"|grep \" ${MONTH}\"|grep \" ${DAY}\"`"
  if [ "${ANSW}" != "" ]; then
    DATICOL="lightgreen"
    let "CNTDAY= ${CNTDAY} + 1"
  fi

# RED & ORANGE => OLDFILERFILE
  if [ "${DATICOL}" = "red" ] || [ "${DATICOL}" = "orange" ]; then
# Put ASUP-data in ASUPOLDFILERS
    echo "  DATICOL=${DATICOL}"
	echo "${DB_SERIAL_NUMBER};${DB_CONTROLER_NAME};${COUNTRYNAME};${DB_ASUP_GENERATED_ON};" >> ${ASUPOLDFILERS}
  fi

  # Get country
  if [ "${DB_SERIAL_NUMBER}" != "" ]; then
    COUNTRYNAME="`grep ${DB_SERIAL_NUMBER} ${COUNTRY2ASUP}|awk -F\; '{print $1}'|sort -u|head -1`"
  fi  # DB_SERIAL_NUMBER
  CTRYCOL=""
  if [ "${COUNTRYNAME}" = "" ]; then
    CTRYCOL="yellow"
	let "EMPTY_DB_CNT= ${EMPTY_DB_CNT} + 1"
# If ASUP(Dati)COL = Red (Last ASUP long time ago), then Country also red. Meaning no NEW filer
	if [ "${DATICOL}" = "red" ]; then
      CTRYCOL="red"
	  let "EMPTY_DB_CNT= ${EMPTY_DB_CNT} - 1"
	fi
  fi  # COUNTRYNAME

  DISPLAY_NR="${DB_SERIAL_NUMBER}"
# When SerNr = <empty> then use SystemID 
  if [ "${DISPLAY_NR}" = "" ]; then
    DISPLAY_NR="_${DB_SYSTEM_ID}"
  fi

  if [ "${DISPLAY_NR}" != "" ] 
#  && [ "${DB_CONTROLER_NAME}" != "" ];
    then
    echo "<TR>" >> ${ASUPSTATUSPAGE}
    echo "  <TD BGCOLOR=${CTRYCOL}> <FONT face='verdana' size=1> ${COUNTRYNAME} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "  <TD> <FONT face='verdana' size=1> ${DISPLAY_NR} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "  <TD> <FONT face='verdana' size=1> ${DB_CONTROLER_NAME} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "  <TD BGCOLOR=${DATICOL}> <FONT face='verdana' size=1> ${DB_ASUP_GENERATED_ON} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
#    echo "  <TD > <FONT face='verdana' size=1> ${ACKFILEDATI} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "  <TD BGCOLOR=${OSCOL}> <FONT face='verdana' size=1> ${DB_OS_VERSION} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "  <TD> <FONT face='verdana' size=1> ${DB_PARTNER_HOSTNAME} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "  <TD> <FONT face='verdana' size=1> ${DB_SNMP_LOCATION} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "  <TD> <FONT face='verdana' size=1> ${DB_SNMP_CONTACT} </FONT> </TD> " >> ${ASUPSTATUSPAGE}
    echo "</TR>" >> ${ASUPSTATUSPAGE}

    let "CNT=${CNT} + 1"
    echo "${CNT}: ${DB_SERIAL_NUMBER} = ${DB_CONTROLER_NAME} = ${DB_ASUP_GENERATED_ON} = ${COUNTRYNAME} ..."
    echo "${COUNTRYNAME};${DB_CONTROLER_NAME};${DB_SERIAL_NUMBER};${DB_SYSTEM_ID};" >> ${ASUP2COUNTRY}
  fi

done  # MAIN loop


echo "<TR>" >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Country:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Serial Number:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Name:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Last ASUP DaTi:</B> </TD> " >> ${ASUPSTATUSPAGE}
#echo "  <TD> <FONT face='verdana' size=1> <B>ASUP Ack DaTi:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>OS Version:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>Partner:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>SNMP location:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "  <TD> <FONT face='verdana' size=1> <B>SNMP contact:</B> </TD> " >> ${ASUPSTATUSPAGE}
echo "</TR>" >> ${ASUPSTATUSPAGE}


echo "  ${CNT} filer(s) found in ${ASUPDBDIR}"|tee -a ${LOG}
echo "<TR>" >> ${ASUPSTATUSPAGE}
  echo "  <TD> <FONT face='verdana' size=1> ${EMPTY_DB_CNT} empty <BR> (new) </FONT> </TD> " >> ${ASUPSTATUSPAGE}
  echo "  <TD> <FONT face='verdana' size=1> ${CNT} systems </FONT> </TD> " >> ${ASUPSTATUSPAGE}
  echo "  <TD></TD> " >> ${ASUPSTATUSPAGE}
  echo "  <TD></TD> " >> ${ASUPSTATUSPAGE}
  echo "  <TD></TD> " >> ${ASUPSTATUSPAGE}
#  echo "  <TD></TD> " >> ${ASUPSTATUSPAGE}
  echo "  <TD></TD> " >> ${ASUPSTATUSPAGE}
  echo "  <TD></TD> " >> ${ASUPSTATUSPAGE}
  echo "  <TD></TD> " >> ${ASUPSTATUSPAGE}
echo "</TR>" >> ${ASUPSTATUSPAGE}

echo "<P>" >> ${ASUPSTATUSPAGE}
echo "</TABLE>" >> ${ASUPSTATUSPAGE}

# Legenda:
echo "  <TABLE>" >> ${ASUPSTATUSPAGE}
echo "    <TR>" >> ${ASUPSTATUSPAGE}
echo "      <TD><FONT face= 'verdana' size=2><B>Legenda: </B></TD>" >> ${ASUPSTATUSPAGE}
echo "    </TR>" >> ${ASUPSTATUSPAGE}
echo "    <TR>" >> ${ASUPSTATUSPAGE}
echo "      <TD><FONT face= 'verdana' size=2>Country: </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD BGCOLOR=yellow> <FONT face= 'verdana' size=2>New to AFSP</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD BGCOLOR=red> <FONT face= 'verdana' size=2>Old to AFSP</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "    </TR>" >> ${ASUPSTATUSPAGE}
echo "    <TR>" >> ${ASUPSTATUSPAGE}
echo "      <TD><FONT face= 'verdana' size=2>Last ASUP: </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD> <FONT face= 'verdana' size=2>No information</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD BGCOLOR=red> <FONT face= 'verdana' size=2>Not this year</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD BGCOLOR=orange> <FONT face= 'verdana' size=2>This year</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD BGCOLOR=yellow> <FONT face= 'verdana' size=2>This month</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD BGCOLOR=lightgreen> <FONT face= 'verdana' size=2>This day</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "    <TR>" >> ${ASUPSTATUSPAGE}
echo "      <TD> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD > <FONT face= 'verdana' size=2>Numbers</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD > <FONT face= 'verdana' size=2>${CNTMORE}</FONT> </TD>" >> ${ASUPSTATUSPAGE}
let "ONLYMON=${CNTMON} - ${CNTDAY}"
let "ONLYYR=${CNTYR} - ${CNTDAY} - ${ONLYMON}"
echo "      <TD > <FONT face= 'verdana' size=2>only ${ONLYYR}</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD > <FONT face= 'verdana' size=2>only ${ONLYMON}</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "      <TD > <FONT face= 'verdana' size=2>only ${CNTDAY}</FONT> </TD>" >> ${ASUPSTATUSPAGE}
echo "    </TR>" >> ${ASUPSTATUSPAGE}
echo "    </TR>" >> ${ASUPSTATUSPAGE}
echo "  </TABLE>" >> ${ASUPSTATUSPAGE}


# --- footer

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

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

# "print" ASUPOLDFILERS
echo "ASUPOLDFILERS (${ASUPOLDFILERS}) :"
#cat ${ASUPOLDFILERS} 

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

