
#!/bin/sh
# File	: upd_uptime.sh
# By	: Maarten.deBoer@Atos.net, 150324
# Subject	: Script to process history
#(0.1)	: From proc_history
#(0.2)	: Added comments at RED
#(0.3)	: Mod. labels
#(0.4)	: Add COUNTRY
#(0.5)	: Add check if 2 uptimedayvaules
#(0.6)	: Added # filers at the end
#(0.7)	: Removed Location & Usage
#(0.8)	: Added Ser.Nr & Model
#(0.9)	: Mod. colors
#(0.10)	: Mod. green -> lightgreen
#(0.11)	: Mod. 0 = pink
#(0.12)	: Mod; When time = same as previous, pink
#(0.13)	: Mod; lightblue when [?] and 0
PGM="`basename $0|cut -d\. -f1`"
VER="0.13"
TMP="/tmp/${PGM}.$$"

#BASEDIR="/appl/mdr/afsp/NL"
BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
LOG="${BASEDIR}/log/${PGM}.log"
FLU="${BASEDIR}/etc/filer-location-usage.csv"
OUT="${BASEDIR}/html/uptime.html"
DBDIR="${BASEDIR}/data/database"

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

# Number of Month
NRWEEKS=24
NRWEEKS=20

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "BASEDIR=${BASEDIR}"
echo "DBDIR=${DBDIR}"

touch ${TMP}
# Read Functions file
source ./afsp-db_functions.sh
DB_FUNC_VER

# Create PAGE
echo "<!DOCTYPE html>" > ${OUT}
echo "<HTML>" >> ${OUT}
echo "<HEAD>" >> ${OUT}
echo "<META charset='UTF-8'>" >> ${OUT}
echo "<META content=Maarten de Boer name=AUTHOR>" >> ${OUT}
echo "<TITLE> uptime history </TITLE>" >> ${OUT}
echo "<basefont face='verdana'>" >> ${OUT}
echo "</HEAD>" >> ${OUT}
echo "<BODY aLink=red bgColor=#D3D0D3 link=red text=#000000 vLink=#ff0000>" >> ${OUT}

echo "<TABLE BORDER=0 WIDTH='100%'>" >> ${OUT}
echo "<TR WIDTH=100% HEIGHT=40px>" >> ${OUT}
echo "  <TD bgColor=#0066A1>" >> ${OUT}
echo "    <FONT COLOR=white face='verdana' size='5'> <B> <A HREF="../${COUNTRY}-overview.html">Filer</A> uptime (in days) history of ${COUNTRY} </B> </FONT>" >> ${OUT}
echo "    <BR>" >> ${OUT}
echo "    <DIV align=right>" >> ${OUT}
echo "    <FONT COLOR=white face='verdana' size='-3'> For internal use. (c) Atos BTN 2015 </B> </FONT>" >> ${OUT}
echo "    </DIV>" >> ${OUT}
echo "  <TD>" >> ${OUT}
echo "</TR>" >> ${OUT}
echo "</TABLE>" >> ${OUT}

cd ${BASEDIR}/data/uptime/
echo "<TABLE BORDER=1>" >> ${OUT}
# Header
echo "<TR>" >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1> <B>Filer:</B> </TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1> <B>SerNr:</B> </TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1> <B>Model:</B> </TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1> <B>OS version:</B> </TD> " >> ${OUT}
ls -1dr 20*|head -n ${NRWEEKS}|while read WEEK
do
  echo "  <TD> <FONT face='verdana' size=1> <B>${WEEK}</B> </TD> " >> ${OUT}
done  # ls
echo "</TR>" >> ${OUT}

# Get all filers 1st
# Skip "empty" (;;) line
cat */*uptime.csv|grep -v ^#|grep -v ';;'|awk -F\; '{print $1}'|sort -u|while read FILER REST
do
  echo "<TR>" >> ${OUT}
  echo "${FILER} ..."
  if [ -d ${DBDIR} ]; then
    SERNR="`grep -i ${FILER} ${DBDIR}/*.asc|grep CONTROLER_NAME|cut -d\. -f1|head -1`"
	if [ "${SERNR}" != "" ]; then
	  DBFILE="${SERNR}.asc"
	  DB_READ ${DBFILE}
	fi
  fi  # -d ${DBDIR}
  echo "  <TD> <FONT face='verdana' size=1>${FILER}</TD> " >> ${OUT}
  echo "  <TD> <FONT face='verdana' size=1>${DB_SERIAL_NUMBER}</TD> " >> ${OUT}
  echo "  <TD> <FONT face='verdana' size=1>${DB_MODEL_NAME}</TD> " >> ${OUT}
  echo "  <TD> <FONT face='verdana' size=1>${DB_OS_VERSION}</TD> " >> ${OUT}

  # Then get history info from the FILER
  PREVWEEK=""
  ls -1dr 20*|head -n ${NRWEEKS}|while read WEEK REST
  do
    UPTIMEDAYS1="`grep \"${FILER}\;\" ${WEEK}/*uptime.csv|head -1|awk -F\; '{print $2}'|sed 's/ //g'|sed 's/days//g'|sed 's/day//g'`"
    UPTIMEDAYS2="`grep \"${FILER}\;\" ${WEEK}/*uptime.csv|head -2|tail -1|awk -F\; '{print $2}'|sed 's/ //g'|sed 's/days//g'|sed 's/day//g'`"
	if [ ${UPTIMEDAYS1} -ne ${UPTIMEDAYS2} ]; then
	  if [ ${UPTIMEDAYS1} -lt ${UPTIMEDAYS2} ]; then
	    UPTIMEDAYS="${UPTIMEDAYS2}"
      else
	    UPTIMEDAYS="${UPTIMEDAYS1}"
	  fi  # -le
    else
	  UPTIMEDAYS="${UPTIMEDAYS1}"
	fi  # -ne
	echo "${WEEK} ${UPTIMEDAYS}"
	UPCOL=""
	if [ ${UPTIMEDAYS} -le 365 ]; then
	  UPCOL="lightgreen"
	fi
	if [ ${UPTIMEDAYS} -lt 28 ]; then
	  UPCOL="yellow"
	fi
	if [ ${UPTIMEDAYS} -lt 21 ]; then
	  UPCOL="orange"
	fi
# Check if cur day is Eq as other, then someting wrong
    if [ ${UPTIMEDAYS} -eq ${PREVWEEK} ]; then
	  UPCOL="pink"
	fi
	PREVWEEK=${UPTIMEDAYS}
	if [ "${UPTIMEDAYS}" = "" ]; then
	  UPCOL=""
	fi
	SPAN=""
	if [ ${UPTIMEDAYS} -lt 14 ]; then
	  UPCOL="red"
      if [ -f ${WEEK}/info.csv ]; then
		INFO="`grep ${FILER} ${WEEK}/info.csv|awk -F\; '{print $2}'`"
		if [ "${INFO}" != "" ]; then
		  SPAN="<SPAN title=\"${INFO}\">[?]</SPAN>"
          UPCOL="lightblue"
		fi  # SPAN
	  else
	    UPCOL="red"
	  fi  # comments
	fi
	if [ ${UPTIMEDAYS} -eq 0 ]; then
	  UPCOL="pink"
      if [ "${INFO}" != "" ]; then
	    SPAN="<SPAN title=\"${INFO}\">[?]</SPAN>"
        UPCOL="lightblue"
	  fi  # SPAN
    fi
	if [ ${UPTIMEDAYS} -gt 365 ]; then
	  UPCOL="yellow"
	fi
	if [ ${UPTIMEDAYS} -gt 730 ]; then
	  UPCOL="orange"
	fi
#    echo "   <TD BGCOLOR=${UPCOL}><FONT face='verdana' size=1> ${UPTIMEDAYS} </TD> " >> ${OUT}
    echo "   <TD BGCOLOR=${UPCOL}><FONT face='verdana' size=1>${UPTIMEDAYS}
	${SPAN}</TD> " >> ${OUT}
  done  # ls -1dr

  echo "</TR>" >> ${OUT}
done  # cat

# Footer
echo "<TR>" >> ${OUT}
echo -n "# Filer ; Uptime;" >> ${TMP}
echo "  <TD> <FONT face='verdana' size=1> <B>Filer:</B> </TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1> <B>SerNr:</B> </TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1> <B>Model:</B> </TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1> <B>OS version:</B> </TD> " >> ${OUT}
ls -1dr 20*|head -n ${NRWEEKS}| while read WEEK
do
  echo -n "${WEEK};" >>  ${TMP}
  echo "  <TD> <FONT face='verdana' size=1> <B>${WEEK}</B> </TD> " >> ${OUT}
done  # ${WEEK}
echo "" >> ${TMP}
echo "</TR>" >> ${OUT}

# Count nr filers / week
echo "<TR>" >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1></TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1></TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1></TD> " >> ${OUT}
echo "  <TD> <FONT face='verdana' size=1><B>Filer count:</B></TD> " >> ${OUT}
ls -1dr 20*|head -n ${NRWEEKS}| while read WEEK
do
  echo -n "${WEEK};" >>  ${TMP}
  CNT="`cat ${WEEK}/*.csv|grep -v ^#|awk -F\; '{print $1}'|sort -u|wc -l`"
  echo "  <TD> <FONT face='verdana' size=1> ${CNT} </TD> " >> ${OUT}
done  # ${WEEK}
echo "" >> ${TMP}
echo "</TR>" >> ${OUT}

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

echo "<P>" >> ${OUT}

echo "  <TABLE>" >> ${OUT}
echo "    <TR>" >> ${OUT}
echo "      <TD><FONT face= 'verdana' size=2><B>Legenda:</B></TD>" >> ${OUT}
echo "      <TD BGCOLOR=lightblue> <FONT face= 'verdana' size=2> Has (mouse)hover-over information </FONT> </TD>" >> ${OUT}
echo "      <TD BGCOLOR=pink> <FONT face= 'verdana' size=2>some error? (0 days or the same as other week)</FONT> </TD>" >> ${OUT}
echo "      <TD BGCOLOR=red> <FONT face= 'verdana' size=2> <14 days </FONT> </TD>" >> ${OUT}
echo "      <TD BGCOLOR=orange> <FONT face= 'verdana' size=2> <21 days </FONT> </TD>" >> ${OUT}
echo "      <TD BGCOLOR=yellow> <FONT face= 'verdana' size=2> <28 days </FONT> </TD>" >> ${OUT}
echo "      <TD BGCOLOR=lightgreen> <FONT face= 'verdana' size=2> <365 days </FONT> </TD>" >> ${OUT}
echo "      <TD BGCOLOR=yellow> <FONT face= 'verdana' size=2> >365 days </FONT> </TD>" >> ${OUT}
echo "      <TD BGCOLOR=orange> <FONT face= 'verdana' size=2> >730 days </FONT> </TD>" >> ${OUT}
echo "    </TR>" >> ${OUT}
echo "  </TABLE>" >> ${OUT}
echo "</TR>" >> ${OUT}

echo "<P>" >> ${OUT}

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

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

##cat ${TMP}

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

