
#!/bin/sh
# File	: mail_afsp-eos.sh
# By	: Maarten.deBoer@atos.net, 191004
# Subject	: Script to mail AFSP(EOS) info /country
#(0.2),191004	: MAILTEXTFILE added
#(0.3),191008	: Added COUNTRYTEXT
PGM="`basename $0|cut -d\. -f1`" 
VER="0.2"
TMP="/tmp/${PGM}.$$"
HOSTNAME=`hostname|cut -d\. -f1`

BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
LOG="${BASEDIR}/log/${PGM}.log"
RCFILE="${BASEDIR}/etc/${PGM}.rc"
DATI=`date +%Y-%m-%d-%H-%M-%S`
CSV="AFSP-EOS_${DATI}.csv"
MAILTO="maarten.deboer@atos.net"
MAILFROM="maarten.deboer@atos.net"
MAILHOST="nlxnetapp02.bcklan.ao-srv.com"
FILTER="[?]*"
MAILTEXTFILE="${BASEDIR}/etc/${PGM}.mailtext"
COUNTRYTEXT="${BASEDIR}/etc/${PGM}.${COUNTRY}"

# Filer End Of Support
FILEREOSHW="/appl/mdr/mdrglob/afsp/glob/etc/filer-end-of-hw-support.csv"
FILEREOSSW="/appl/mdr/mdrglob/afsp/glob/etc/filer-end-of-sw-support.csv"

echo "`date` ${PGM} v${VER} Started."|tee -a ${LOG}
touch ${TMP}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Reading it"|tee -a ${LOG}
  . ${RCFILE}
fi  # RCFILE

echo "ASUPDBDIR=${ASUPDBDIR}"
echo "BASEDIR=${BASEDIR}"
echo "COUNTRYDIR=${COUNTRYDIR}"
echo "COUNTRY2ASUP=${COUNTRY2ASUP}"
echo "FILTER=${FILTER}"
echo "FILEREOSHW=${FILEREOSHW}"
echo "FILEREOSSW=${FILEREOSSW}"
echo "LOG=${LOG}"
echo "RCFILE=${RCFILE}"
sleep 3

if [ -f ${FILEREOSHW} ]; then
  echo "  FILEREOSHW(${FILEREOSHW}) found."|tee -a ${LOG}
fi
if [ -f ${FILEREOSSW} ]; then
  echo "  FILEREOSSW(${FILEREOSSW}) found."|tee -a ${LOG}
fi

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

for COUNTRY in `cd /appl/mdr/mdrglob/afsp/; ls -1d ??|grep ${FILTER}`
do
  echo "${COUNTRY} ..."
  echo "# Country;Controler name;Serial number;Model name;Model EOS;ONTAP version;ONTAP EOS;SNMP Location;Last ASUP Generated on;REMARKS;" > ${TMP}
  # 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 -n "."
	  DB_READ ${DBFILE}

# If FIler EOS file found AND there is a MODEL-name, then get EOS-date
      FILEREOSHWDATE=""
      if [ -f ${FILEREOSHW} ] && [ "${DB_MODEL_NAME}" != "" ]; then
        FILEREOSHWDATE=`grep "${DB_MODEL_NAME}" ${FILEREOSHW}|grep -v ^#|awk -F\; '{print $2}'|sort -u|head -1`
      fi  # FILEREOSHW

# OS_VERSION = whole version nr with P & without 7-mode
# OS_RELEASE = Only the 2 digits (are in filer-end-of-sw-support.csv)
      OS_VERSION=`echo ${DB_OS_VERSION}|awk '{print $1}'`
      OS_RELEASE=`echo ${DB_OS_VERSION}|awk '{print $1}'|awk -F\. '{print $1"."$2}'|cut -d\P -f1`
      FILEREOSSWDATE=""
      if [ -f ${FILEREOSSW} ] && [ "${OS_RELEASE}" != "" ]; then
# Get the right ONTAP-version. Exclude some P's
        FILEREOSSWDATE=`grep "^${OS_VERSION}" ${FILEREOSSW}|grep -v ^#|awk -F\; '{print $2}'|head -1`
        if [ "${FILEREOSSWDATE}" = "" ]; then
          FILEREOSSWDATE=`grep "^${OS_RELEASE}" ${FILEREOSSW}|grep -v ^#|head -1|awk -F\; '{print $2}'`
          ANSW=`echo ${DB_OS_VERSION}|grep -i '7-mode'`
          if [ "${ANSW}" != "" ]; then
# 7-mode ONTAP found. Check 8.2
            FILEREOSSWDATE=`grep "^${OS_RELEASE} 7-Mode" ${FILEREOSSW}|grep -v ^#|head -1|awk -F\; '{print $2}'`
          fi
        fi  # = ""
#        echo "  ${DB_CONTROLER_NAME}: ${OS_RELEASE} = ${FILEREOSSWDATE}"
      fi  # FILEREOSSW
      INT_CUR_DATE=`date +%Y%m%d`   
      INT_FILEREOSHWDATE=`echo ${FILEREOSHWDATE}|sed 's/-//g'`
      INT_FILEREOSSWDATE=`echo ${FILEREOSSWDATE}|sed 's/-//g'`
      if [ "${INT_FILEREOSHWDATE}" = "" ]; then
# When empty, fill with large nr
        INT_FILEREOSHWDATE="99991231"
      fi
      if [ "${INT_FILEREOSSWDATE}" = "" ]; then
# When empty, fill with large nr
        INT_FILEREOSSWDATE="99991231"
      fi
      if [ "${INT_FILEREOSHWDATE}" -lt "${INT_CUR_DATE}" ] || [ "${INT_FILEREOSSWDATE}" -lt "${INT_CUR_DATE}" ]; then
        echo -n " EOS-HW:${DB_CONTROLER_NAME}:${DB_MODEL_NAME}=${FILEREOSHWDATE}"
        echo " EOS-SW:${DB_CONTROLER_NAME}:${DB_OS_VERSION}=${FILEREOSSWDATE}"
        echo "${COUNTRY};${DB_CONTROLER_NAME};${DB_SERIAL_NUMBER};${DB_MODEL_NAME};${FILEREOSHWDATE};${DB_OS_VERSION};${FILEREOSSWDATE};${DB_SNMP_LOCATION};${DB_ASUP_GENERATED_ON};${REMARKS}; " >> ${TMP}
      fi

	done  # FILE
  fi  # database
# Create file & mail /country. Because responsibility is /country
  echo "#" >> ${TMP}
  echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${TMP}

  CSV="AFSP-EOS_${COUNTRY}_${DATI}.csv"
  cp ${TMP} /tmp/${CSV}
  MAILTO="atos_${COUNTRY}@${MAILHOST}"
#MAILTO="atos_afsp@${MAILHOST}"
  if [ -f ${MAILTEXTFILE} ]; then
    cat ${MAILTEXTFILE}|grep -v ^# > ${TMP}
    COUNTRYTEXT="${BASEDIR}/etc/${PGM}.${COUNTRY}"
    if [ -f ${COUNTRYTEXT} ]; then
      cat ${COUNTRYTEXT}|grep -v ^# >> ${TMP}
    fi
    cat ${TMP}|grep -v ^# | mailx -r ${MAILFROM} -a /tmp/${CSV} -s "NetApp hardware and software EOS for ${COUNTRY} [${PGM} v${VER}]" ${MAILTO}
    echo "  Mailed (with ${MAILTEXTFILE}) to ${MAILTO} ..."|tee -a ${LOG}
  else
    date | mailx -r ${MAILFROM} -a /tmp/${CSV} -s "NetApp hardware and software EOS for ${COUNTRY} [${PGM} v${VER}]" ${MAILTO}
    echo "  Mailed to ${MAILTO} ..."|tee -a ${LOG}
  fi
  rm /tmp/${CSV}


done  # ${COUNTRY}

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

