
#!/bin/sh
# File	: proc_automation-mail.sh
# By	: MaartenDeBoer.nl, 210615, 230808
# Subject	: Script to process automation by mail
# From proc_mail-subjects.sh
#(0.2),230808	: Old name proc_mail-automation.sh
#(0.3),230809	: Update
PGM=`basename $0|cut -d\. -f1`
VER="0.3"
TMP="/tmp/${PGM}.$$"
BASEDIR="${HOME}/automation"
LOG="${BASEDIR}/log/${PGM}.log"
HOSTNAME=`hostname|cut -d\. -f1`

DATADIR="${BASEDIR}/data"
INDIR="${DATADIR}/in"
DONEDIR="${DATADIR}/done"
SUBJECT=""
CHECK=""
MAIL=""
COMMAND=""
FROM=""
DATI=`date +%Y-%m-%d-%H-%M-%S`
NO_MOVE=""

USAGE()
{
  echo "Usage: ${PGM} <options>"
  echo "  Version: ${VER}"
  echo "  options               :"
  echo "    -h | --help         : this help"
  echo "    -f | --from         : From"
  echo "    -s | --subject      : Subject"
  echo "    --no-move           : do NOt move from DATA/IN to DATA/DAONE (for testing purpose)"
  echo "    -V                  : Version"
  echo "    -x                  : set -x"
}
if [ ${#} -lt 1 ]; then
  echo "  Do NOT know what to do. Exiting ..."
  USAGE
  exit 1
fi
while [ ${#} -ge 1 ]
  do
  case ${1} in
    -f | --from) FROM="${2}"; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -s | --subject) SUBJECT="${2}"; shift ;;
    --no-move) NO_MOVE=1 ;;
    -V) echo "${PGM}: v${VER}"; exit 2 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

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

if [ ! -d ${DATADIR} ]; then
  mkdir -p ${DATADIR}
  echo "  Dir. ${DATADIR} created."|tee -a ${LOG}
fi
if [ ! -d ${INDIR} ]; then
  mkdir -p ${INDIR}
  echo "  Dir. ${INDIR} created."|tee -a ${LOG}
fi
if [ ! -d ${DONEDIR} ]; then
  mkdir -p ${DONEDIR}
  echo "  Dir. ${DONEDIR} created."|tee -a ${LOG}
fi

# When CHECK=1, then no FROM is needed.
if [ ! ${CHECK} ] && [ "${FROM}" = "" ]; then
  echo "  NO FROM-address ($FROM}). So, no idea to answer to. Exiting ..."|tee -a ${LOG}
  exit 3
fi

# Check if " } " is in the SUBJECT. Then is COMMAND. And NOT to be stored
ANSW=`echo ${SUBJECT}|grep ':'`
# When a CMD (in ANSW) and a FROM-address
if [ "${ANSW}" != "" ] && [ "${FROM}" != "" ]; then
  COMMAND=`echo ${SUBJECT}|cut -d\: -f2|tr [:upper:] [:lower:]|sed 's/ //g'`
  echo "    COMMAND=${COMMAND}|"|tee -a ${LOG}
  case ${COMMAND} in
# ----------------
    help)
      echo "nl-fsod: <commands> " > ${TMP}
      echo "  help : this help." >> ${TMP}
      echo "" >> ${TMP}
      cat ${TMP}| mailx -s "[nl-fsod] Commands: " ${FROM}
      echo "  Mailed commands to ${FROM}"|tee -a ${LOG}
      cp /dev/null ${TMP}
    ;;
#
# ----------------
    list)
      echo "list:" > ${TMP}
      ls -lr ${INDIR} >> ${TMP}

      cat ${TMP}| mailx -s "[nl-fsod] List: " ${FROM}
      echo "  Mailed List to ${FROM}"|tee -a ${LOG}
      cp /dev/null ${TMP}
    ;;
# ----------------
    check)
      echo "  Checking ${INDIR}" >> ${LOG}
      cd ${INDIR}
# remove "text"-files 1st
      rm textfile* 
      ls -1 *.csv|while read INFILE
      do
        echo "    INFILE=${INFILE}" >> ${LOG}
        CH_NR=`echo "${INFILE}"| cut -d\_ -f1|grep ^CH`
        if [ "${CH_NR}" != "" ]; then
# 1st part of file name = CHange-nr
          NL_FSOD_FNAME=`echo "${INFILE}"| cut -d\_ -f2-|grep ^nl-fsod`
        else
          NL_FSOD_FNAME=`echo "${INFILE}"| cut -d\_ -f1-|grep ^nl-fsod`
        fi  # CH_NR}" != ""
        echo "      CH_NR=${CH_NR} NL_FSOD_FNAME=${NL_FSOD_FNAME}" >> ${LOG}

        LINE_CNT=0
        echo "  ${INFILE}:"
        cat ${INFILE}|grep -v ^#|while read LINE
        do
# (1)NAO_CLUSTERNAME;(2)NAO_SVM_NAME;(3)NAO_VOL_NAME;(4)NAO_VOL_AGGR_NAME;(5)NAO_VOL_STOR_CLASS;(6)NAO_VOL_SIZE;(7)NAO_VOL_SIZE_UNIT;(8)NAO_VOL_TYPE;(9)ATOS_CHANGE_NR;(10)NAO_QTREE_NAME;(11)NAO_QUOTA_DISK_LIMIT;(12)NAO_QTREE_SECURITY_STYLE;(13)NAO_QTREE_EXPORT_POLICY;
#
          NAO_CLUSTERNAME=`echo ${LINE}|awk -F\; '{print $1}'`
          NAO_SVM_NAME=`echo ${LINE}|awk -F\; '{print $2}'`
          NAO_VOL_NAME=`echo ${LINE}|awk -F\; '{print $3}'`
          NAO_VOL_AGGR_NAME=`echo ${LINE}|awk -F\; '{print $4}'`
          NAO_VOL_STOR_CLASS=`echo ${LINE}|awk -F\; '{print $5}'`
          NAO_VOL_SIZE=`echo ${LINE}|awk -F\; '{print $6}'`
          NAO_VOL_SIZE_UNIT=`echo ${LINE}|awk -F\; '{print $7}'`
          NAO_VOL_TYPE=`echo ${LINE}|awk -F\; '{print $8}'`
          ATOS_CHANGE_NR=`echo ${LINE}|awk -F\; '{print $9}'`
          NAO_QTREE_NAME=`echo ${LINE}|awk -F\; '{print $10}'`
          NAO_QUOTA_DISK_LIMIT=`echo ${LINE}|awk -F\; '{print $11}'`
          NAO_QTREE_SECURITY_STYLE=`echo ${LINE}|awk -F\; '{print $12}'`
          NAO_QTREE_EXPORT_POLICY=`echo ${LINE}|awk -F\; '{print $13}'`
       
          LINE_CNT=`expr ${LINE_CNT} + 1`
          echo "(${LINE_CNT}): ${NAO_CLUSTERNAME} ${NAO_SVM_NAME} ${NAO_VOL_NAME} ${NAO_VOL_AGGR_NAME} ${NAO_VOL_STOR_CLASS} ${NAO_VOL_SIZE} ${NAO_QTREE_NAME} "

        done  # LINE
        
        echo "    Moving to ${DONEDIR}" >> ${LOG}
        if [ ! ${NO_MOVE} ]; then
          mv ${INFILE} ${DONEDIR}/${DATI}_${INFILE}
        fi  # NO_MOVE
      done  # .csv
    ;;
# ----------------
    *)
     echo "  Wrong command (${COMMAND}). Use \"nl-fsod: help\" in the subject for some help."|tee -a ${LOG}| mailx -s "[nl-fsod] Wrong command." ${FROM}
     ;;
  esac
fi

# If NO COMMAND then store


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

