
#!/bin/bash
# File	: proc_asup-files_for_uptime.sh
# By	: Maarten.deBoer@atos.net, 150925
# Subject	: Script to process ASUP-files for uptime info
#set -x
#(0.2)	: Mod. ASUPDATADIR
#(0.3)	: Mod. search for uptime in CF-MONITOR.txt whne UPTIME=0
#(0.4)	: Some mod in uptime check from ASUP data
PGM="`basename $0|cut -d\. -f1`" 
VER="0.4"
TMP="/tmp/${PGM}.$$"

BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
LOG="${BASEDIR}/log/${PGM}.log"
OUT="controllers-uptime.csv"
DATADIR="${BASEDIR}/data"
COUNTRY="`echo ${BASEDIR}| cut -d\/ -f6`"

ASUPDATADIR="/appl/asup/data"

MAILTO="maarten.deboer@atos.net"

echo "`date` ${PGM} v${VER} Started."|tee -a ${LOG}
touch ${TMP}

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

echo ${BASEDIR}

if [ ! -d ${BASEDIR}/data/uptime ]; then
  mkdir ${BASEDIR}/data/uptime
fi

  echo "${COUNTRY} ..."
  echo "# Processed by ${PGM} v${VER} at `hostname`" > ${TMP}
  OUT="${BASEDIR}/data/uptime/controllers-uptime.csv"
  # If database, then cd to database
  if [ -d /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database ]; then
    cd /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database
	ls -1 | while read DBFILE
	do
#	  echo "${DBFILE} ..."
	  DB_READ ${DBFILE}

	  if [ "${DB_CONTROLER_NAME}" != "" ] && [ "${DB_SERIAL_NUMBER}" != "" ]; then
		echo "${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}... "
	    if [ -f ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/messages.log.gz ]; then
		  UPTIMELINE="`zcat ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/messages.log.gz|grep 'kern.uptime.filer:info'|tail -1`"
		  UPTI34="`echo ${UPTIMELINE}|cut -d\] -f2|awk '{print $3,$4}'| sed -e 's/,//g'`"
		  DAYS="`echo ${UPTI34}| grep day|cut -d' ' -f1`"
		  echo "  (messages.log.gz for uptime.filer:info) => ${DAYS}days "
		  if [ "${DAYS}" = "" ]; then
		    DAYS="0"
			if [ -f ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/CF-MONITOR.txt ]; then
			  UPTIMEMS="`grep uptime ${ASUPDATADIR}/${DB_CONTROLER_NAME}_${DB_SERIAL_NUMBER}/CF-MONITOR.txt|tail -1|awk -F\: '{print $2}'|awk '{print $1}'`"
			  DAYS="`expr ${UPTIMEMS} / 86400000`"
		      echo "  (CF-MONITOR.txt for uptime) => ${DAYS}days "

			fi  # CF-MONITOR.txt
		  fi
		  echo "${DB_CONTROLER_NAME};${DAYS} days;"|tee -a ${TMP}
		fi  # -f
	  fi  # NAME && SER.NR

	done  # FILE
  fi  # database

  cp ${TMP} ${OUT}


# Create week dir
# etc/month-week.csv
ETC="${BASEDIR}/etc/date-week-month.csv"
if [ -f ${ETC} ]; then
  DATE="`date +%F`"
  WEEK="`grep ${DATE} ${ETC}|awk -F\; '{print $2}'`"
  echo "${DATE} -> ${WEEK}"
  # Check if new week dir exists, otherwise create
  if [ ! -d ${BASEDIR}/data/uptime/${WEEK} ]; then
    mkdir ${BASEDIR}/data/uptime/${WEEK}
    cp ${OUT} ${BASEDIR}/data/uptime/${WEEK}/
    echo "  Created ${BASEDIR}/data/uptime/${WEEK}/ and copied ${OUT} to it"|tee -a ${LOG}
  fi  # -d
fi  # date-week-month

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

