
#!/bin/sh
# File	: proc_asup_mail.sh
# By	: Maarten.deBoer@Atos.net, 1500805
# Subject	: Script to process (moving) ASUP-files to ASUPMAILDIR (keep last). Processing into ASUPDATADIR
#(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
#(0.11)	: Added body -> part
#(0.12)	: Removed <model> for better processing in proc_asup-files_to_db.sh
#set -x
PGM="`basename $0|cut -d\. -f1`"
VER="0.12"
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"

# Skip some parts by emptying ("") it.
DOINDIR=1
DOMAILPROC=1


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

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

if [ ${DOINDIR} ]; then

echo "  Moving from ${INDIR} ..."
ls -1tr ${INDIR}/*.asc |while read FILE
do
  echo -n "." 
#  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};;${OSRELEASE};<firmware>;${SERNR};${PARTNER};${CONTACT};${ASUPDATI};" >${OUT}
#    echo "sn_${SERNR} = ${HOSTNAME} = ${OSRELEASE}"
  else
    if [ "${SYSID}" != "" ]; then
      OUT="${ASUPDIR}/si_${SYSID}.csv"
      echo "${HOSTNAME};${LOCATION};;${OSRELEASE};<firmware>;${SERNR};${PARTNER};${CONTACT};${ASUPDATI};" >${OUT}
#      echo "si_${SYSID} = ${HOSTNAME} = ${OSRELEASE}"
	else
      OUT="${ASUPDIR}/hn_${HOSTNAME}.csv"
      echo "${HOSTNAME};${LOCATION};;${OSRELEASE};<firmware>;${SERNR};${PARTNER};${CONTACT};${ASUPDATI};" >${OUT}
#      echo "hn_${HOSTNAME} = ${HOSTNAME} = ${OSRELEASE}"
	fi
  fi  # SERNR

done  # ls -1
fi  # ${DOINDIR}

if [ ${DOMAILPROC} ]; then

echo "Moving ASUP-file(s) (${INDIR}) 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
fi  # ${DOMAILPROC}

echo "Start processing ASUP-mails into ASUP-data-dir (${ASUPDATADIR}) ..."
ls -1 ${ASUPMAILDIR}/mail*.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

#unpack the Mail and move the Mail-file to an archive (DONE/)
    ${MUNPACK} -C ${DIR} ${FILE}
    mv ${FILE} ${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  # /body.7z

    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  # body.tgz 

# part has been introdured (why, ?)
    ls -1 ${DIR}/part*|while read PARTFILE
    do
      echo " processing ${PARTFILE} ..."
      7za e -y -o${DIR} ${PARTFILE} 1> /dev/null
      rm ${PARTFILE}
    done  # ls -1 ${DIR}/part*

  fi  # HOSTNAME 
done  # ls -1 *.csv

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

