
#!/bin/sh
# File	: proc_asup_mail.sh
# By	: Maarten.deBoer@Atos.net, 1500805
# Subject	: Process ASUP mail-files
# /appl/mdr/mdrglob/mail/asup/
#(0.2)	: Added OUT-file in asup-dir, based on Ser.Nr
#(0.3)	: Change "verbose" output
#(0.4)	: Change ASUPDATA-name to sernr_ & sysid_ & not proc CSV
#(0.5)	: Mod filename
#(0.6)	: Mod; move ASUP file to ASUPMAILDIR
#(0.7)	: Added proc of ASUP-files (7za)
#(0.8)	: Added: sed 's/=3D/=/g'
#(0.9)	: Changed to |sed 's/^3D//' 
#(0.10)	: Mod. ASUPMAILDIR & ASUPDATADIR
#set -x
PGM="`basename $0|cut -d\. -f1`"
VER="0.10"
TMP="/tmp/${PGM}.$$"

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

#INDIR="/appl/mdr/mdrglob/mail/asup"
INDIR="/appl/asup/mail-in"

#ASUPMAILDIR="${HOME}/asup-mail"
ASUPMAILDIR="/appl/asup/mail-proc"
#ASUPDATADIR="${HOME}/asup-data"
ASUPDATADIR="/appl/asup/data"

MUNPACK="/appl/mdr/mdrglob/bin/munpack"

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

ASUPDIR="${BASEDIR}/data/asup"
if [ ! -d ${ASUPDIR} ]; then
  mkdir ${ASUPDIR}
fi  # -d

ls -1tr ${INDIR}/*.asc |while read FILE
do
#  echo ${FILE}
#CONFIDENTIALITY=NetApp Confidential
#GENERATED_ON=Wed Aug 05 11:22:55 CEST 2015
#VERSION=NetApp Release 8.2.2 Cluster-Mode: Fri Aug 22 01:46:52 PDT 2014
#SYSTEM_ID=0536945961
#SERIAL_NUM=211431000008
#HOSTNAME=nlnaf100-02
#SEQUENCE=904
#SNMP_CONTACT=<unknown>
#SNMP_LOCATION=Best
#PARTNER_SYSTEM_ID=0536945653
#PARTNER_HOSTNAME=nlnaf100-01
#BOOT_CLUSTERED='true'

  SERNR="`grep ^SERIAL_NUM "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  SYSID="`grep ^SYSTEM_ID "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  HOSTNAME="`grep ^HOSTNAME "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  LOCATION="`grep ^SNMP_LOCATION "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  OSRELEASE="`grep ^VERSION "${FILE}"|awk -F\= '{print $2}'|cut -d\: -f1|sed 's/Release //g'|sed 's/NetApp //g'|sed 's/Data //g'|sed 's/ONTAP //g'|sed 's/^3D//'`"
  PARTNER="`grep ^PARTNER_HOSTNAME "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  CONTACT="`grep ^SNMP_CONTACT "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  ASUPDATI="`grep ^GENERATED_ON "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
 # Place the last data in the filer-data-file. Based on SerNr.
  if [ "${SERNR}" != "" ]; then
    OUT="${ASUPDIR}/sn_${SERNR}.csv"
    echo "${HOSTNAME};${LOCATION};<model>;${OSRELEASE};<firmware>;${SERNR};${PARTNER};${CONTACT};${ASUPDATI};" >${OUT}
    echo "sn_${SERNR} = ${HOSTNAME} = ${OSRELEASE}"
  else
    if [ "${SYSID}" != "" ]; then
      OUT="${ASUPDIR}/si_${SYSID}.csv"
      echo "${HOSTNAME};${LOCATION};<model>;${OSRELEASE};<firmware>;${SERNR};${PARTNER};${CONTACT};${ASUPDATI};" >${OUT}
      echo "si_${SYSID} = ${HOSTNAME} = ${OSRELEASE}"
	else
      OUT="${ASUPDIR}/hn_${HOSTNAME}.csv"
      echo "${HOSTNAME};${LOCATION};<model>;${OSRELEASE};<firmware>;${SERNR};${PARTNER};${CONTACT};${ASUPDATI};" >${OUT}
      echo "hn_${HOSTNAME} = ${HOSTNAME} = ${OSRELEASE}"
	fi
  fi  # SERNR

done  # ls -1

echo "Moving ASUP-file(s) to ASUP-mail-dir (${ASUPMAILDIR}) and keep last  ..."

cd ${INDIR}
ls -1 *.asc|while read FILE
do
  ASUPDATI="`grep ^GENERATED_ON "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  SERNR="`grep ^SERIAL_NUM "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  if [ "${SERNR}" = "" ]; then
    SYSID="`grep ^SYSTEM_ID "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
    if [ "${SYSID}" = "" ]; then
      HOSTNAME="`grep ^HOSTNAME "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
      CSVFILE="hn_${SERNR}.csv"
      CSVASUPDATI="`cat ${ASUPDIR}/${CSVFILE}|awk -F\; '{print $9}'`"
      # Check if last ASUP-file. Otherwise move
  	  if [ "${ASUPDATI}" != "${CSVASUPDATI}" ]; then
	    echo "|${ASUPDATI}<>${CSVASUPDATI}|"
	    mv ${FILE} ${ASUPMAILDIR}/
		echo "  ${FILE} moved to ${ASUPMAILDIR}/"|tee -a ${LOG}
  	  fi
	else
      CSVFILE="si_${SERNR}.csv"
      CSVASUPDATI="`cat ${ASUPDIR}/${CSVFILE}|awk -F\; '{print $9}'`"
      # Check if last ASUP-file. Otherwise move
  	  if [ "${ASUPDATI}" != "${CSVASUPDATI}" ]; then
	    echo "|${ASUPDATI}<>${CSVASUPDATI}|"
	    mv ${FILE} ${ASUPMAILDIR}/
		echo "  ${FILE} moved to ${ASUPMAILDIR}/"|tee -a ${LOG}
  	  fi
    fi  # SYSID
  else
    CSVFILE="sn_${SERNR}.csv"
	CSVASUPDATI="`cat ${ASUPDIR}/${CSVFILE}|awk -F\; '{print $9}'`"
	# Check if last ASUP-file. Otherwise move
	if [ "${ASUPDATI}" != "${CSVASUPDATI}" ]; then
	  echo "|${ASUPDATI}<>${CSVASUPDATI}|"
	  mv ${FILE} ${ASUPMAILDIR}/
      echo "  ${FILE} moved to ${ASUPMAILDIR}/"|tee -a ${LOG}
	fi
  fi  # SERNR

done  # ls -1 *.csv

echo "Start processing ASUP-mails into ASUP-data-dir (${ASUPDATADIR}) ..."
ls -1 ${ASUPMAILDIR}/*.asc|while read FILE REST
do
  echo "  Processing ${FILE}"|tee -a ${LOG}
  SERNR="`grep ^SERIAL_NUM "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  SYSID="`grep ^SYSTEM_ID "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"
  HOSTNAME="`grep ^HOSTNAME "${FILE}"|awk -F\= '{print $2}'|sed 's/^3D//'`"

  if [ "${HOSTNAME}" != "" ]; then
# Create a DIR with hostname & Sernr, of Sysid. When no Sernr / SysID, then only hostname
    if [ "${SERNR}" != "" ]; then
	  DIR="${ASUPDATADIR}/${HOSTNAME}_${SERNR}"
    else
     if [ "${SYSID}" != "" ]; then
	    DIR="${ASUPDATADIR}/${HOSTNAME}__${SYSID}"
      else
        DIR= "${ASUPDATADIR}/${HOSTNAME}"
	  fi  # SERNR
	fi  # SERNR
	echo "  Processing in ${DIR}"|tee -a ${LOG}
    if [ ! -d ${DIR} ]; then
	  mkdir ${DIR}/
	fi  # ! -d

	mv ${FILE} ${DIR}/

	${MUNPACK} -C ${DIR} ${DIR}/*.asc
	mv ${DIR}/*.asc ${ASUPMAILDIR}/DONE/

    if [ -f ${DIR}/body.7z ]; then
# Extract (no path = e) overwrite (-y) in dir (-o) ${DIR) 
	  7za e -y -o${DIR} ${DIR}/body.7z 1> /dev/null
	  EC=${?}
#	  echo "  EC=${EC}"
    fi
    if [ -f ${DIR}/body.tgz ]; then
	  7za e -y -o${DIR} ${DIR}/body.tgz 1> /dev/null
	  cd ${DIR}
	  tar xvzf body.tgz 1> /dev/null
	fi
	rm ${DIR}/body.*

  fi  # HOSTNAME 

done  # ls -1 *.csv

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

