
#!/bin/sh
# File	: proc_csv-files-uptime.sh
# By	: Maarten.deBoer@Atos.net
# SUbject	: Script to process all csv-files for filers-releases
#(0.2}	: Added BASEDIR & COUNTRY
#(0.3)	: Added disks-broken. Mod COUNTRY
#(0.4)	: Mod data-struct, Remove ${COUNTRY}
#(0.5)	: Mod. sh-> ksh, Add uptime
#(0.6)	: Mod. for " in IN file
#(0.7)	: Mod for added LASTDATE at incomming, UPTIMEDAYS & added cut @CONTROLLER
#(0.8)  : Check for file in DAY-dir (otherwise created empty file)
#(0.9)  : proc_csv-files-uptime.sh: Only vor UPTIME
#(0.10) : Add sh-uptime.csv & if UPTIMEDAT="" do not print & only filer/controler-name & uptimedays in OUT-file. Changed OUT into controlers-uptime.csv
#(0.11)	: Create uptime/week-dir as well
#(0.12)	: Some mod's concerning ${OUT}
#(0.13)	: Mod. LASTDIR
PGM="`basename $0|cut -d\. -f1`"
VER="0.13"
TMP="/tmp/${PGM}.$$"

BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
ETCENV="${BASEDIR}/etc/afsp.env"
LOG="${BASEDIR}/log/${PGM}.log"

INDIR="${BASEDIR}/incomming"
OUT="${BASEDIR}/data/${PGM}.csv"

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

# Proces more files in INDIR
cd ${INDIR}
LASTDIR="`ls -1d 20??-??-??|tail -1`"

if [ "${1}" != "" ]; then
  LASTDIR="${1}"
fi
if [ ! -d ${INDIR}/${LASTDIR} ]; then
  echo " Dir ${INDIR}/${LASTDIR} not found. Exiting ..."
  exit 2
fi
cd ${LASTDIR}

# Uptime
echo "  uptime (${INDIR}/${LASTDIR})"|tee -a ${LOG}

OUT="${BASEDIR}/data/uptime/controllers-uptime.csv"
cp /dev/null ${OUT}
# Check if files are available
ls dfm-controllers-uptime_*.csv 1> /dev/null 2> /dev/null
EC=${?}
if [ ${EC} -eq 0 ]; then
  echo '#"Object ID";"Uptime days";"Type";"Status";"Controller";"Model";"Release";"Uptime";' > ${OUT} 

  ls -1 dfm-controllers-uptime_*.csv | while read FILE
   do
   grep ',' ${FILE} 1> /dev/null
   RC=${?}
# If 0, file has ;
    if [ ${RC} -eq 0 ]; then
      echo "${FILE} , ..."
      cat ${FILE}|egrep -v 'Object|Total'|while read LINE
      do
        ID="`echo ${LINE}|awk -F\, '{print $1}'`"
        TYPE="`echo ${LINE}|awk -F\, '{print $2}'`"
        STATUS="`echo ${LINE}|awk -F\, '{print $3}'`"
        CONTROLLER="`echo ${LINE}|awk -F\, '{print $4}'|cut -d\. -f1`"
        MODEL="`echo ${LINE}|awk -F\, '{print $5}'`"
        RELEASE="`echo ${LINE}|awk -F\, '{print $6}'`"
# Check if number
# sed = to remove special char '\r'
        UPTIME=`echo ${LINE}|awk -F\, '{print $7}'|grep [0-9]|sed 's/\\r//g'`
		UPTIMEDAY=""
		if [ "${UPTIME}" != "" ]; then
          UPTIMEDAYS="`expr ${UPTIME} / 86400`"
		fi  # UPTIME
        echo "(${CONTROLLER} ${UPTIME} -> ${UPTIMEDAYS})"

        echo ${MODEL}|egrep '^FAS|^N|^V' 1> /dev/null
        RC=${?}
        if [ ${RC} -eq 0 ] && [ "${UPTIMEDAYS}" != "" ]; then
#          echo "${CONTROLLER};${UPTIMEDAYS} days;${TYPE};${STATUS};${ID};${MODEL};${RELEASE};${UPTIME};" >> ${OUT}
          echo "${CONTROLLER};${UPTIMEDAYS} days;" >> ${OUT}
        else
         if [ "${NAME}" != "" ]; then
           echo "${NAME};;;;;;;;"| tee -a ${OUT}
           echo "ERROR ${NAME}"|tee -a ${LOG}
         fi
       fi
     done  # cat


    fi  # RC
  done  # ls -1
fi  # EC

# SH-part
ls sh-controllers-uptime_*.csv 1> /dev/null 2> /dev/null
EC=${?}
if [ ${EC} -eq 0 ]; then
#  echo '#"Filername";"Uptime days";' > ${OUT} 

  ls -1 sh-controllers-uptime_*.csv | while read FILE
  do
    grep ';' ${FILE} 1> /dev/null
    RC=${?}
# If 0, file has ;
    if [ ${RC} -eq 0 ]; then
      echo "${FILE} ; ..."
      cat ${FILE}|grep -v ^#|while read LINE
      do
        FILERNAME="`echo ${LINE}|awk -F\; '{print $1}'`"
        UPTIMEDAYS="`echo ${LINE}|awk -F\; '{print $2}'`"

        echo "${FILERNAME};${UPTIMEDAYS};" |tee -a ${OUT}
      done  # Cat
    fi  # RC = 0
  done  # ls -1
fi  # EC

# 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

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

