
#!/bin/sh
# File	: proc_dd-autosupports.sh
# By	: Maarten.deBoer@atos.net
# Subject	: Script to process DataDomains autosupport messages
#(0.2),210312	: Move to HISTORYDIR
#(0.3),210312	: Add MAILTO & DECARBONTO
#(0.4),210312   : Mode DD_NAME; -p[01] is ONE system with more 2 nodes
#(0.5),210317	: Mod. for filenames with ()
PGM=`basename $0|cut -d\. -f1`
VER="0.5"
TMP="/tmp/${PGM}.$$"
BASEDIR="/appl/data/datadomain"
LOG="${BASEDIR}/log/${PGM}.log"
RCFILE="${BASEDIR}/etc/${PGM}.rc"
MAILTO="maarten.deboer@atos.net"
DECARBONTO="nl19471@nlxnetapp01.bcklan.ao-srv.com"

INDIR="${BASEDIR}/input"
HISTORYDIR="${BASEDIR}/history"
DATADIR="${BASEDIR}/data"

PROCDATE=`date +%Y-%m-%d`
MOVE=1
CSVFILE="${DATADIR}/datadomain_disks-sum.csv"
REMARKS=""

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options          : "
  echo "     -h | --help : This help"
  echo "     -d | --date : change process-Date (${PROCDATE})"
  echo "     -r | --rc   : change Rcfile (${RCFILE})"
  echo "     --indir     : change INputDIRectory (${INDIR})"
  echo "     --nomove    : do NO MOVE of INputDIR-data"
  echo "     -V          : Version"
}
while [ ${#} -gt 0 ]
do
  case "${1}" in
    -h | --help)  USAGE; exit 1 ;;
    -d | --date) PROCDATE="${2}"; shift ;;
    -r | --rc) RCFILE="${2}"; shift ;;
    --indir) INDIR="${2}"; shift ;;
    --nomove) MOVE="" ;;
    -x)  set -x ;;
    -V)  echo "Version=${VER}" ; exit 1 ;;
    *) echo "Option ${1} not found." ; USAGE; exit 1 ;;
  esac
  shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE(${RCFILE}) found. Using it ..."|tee -a ${LOG}
  . ${RCFILE}
  sleep 1
fi

CSVFILE="${DATADIR}/datadomain_${PROCDATE}_disks-sum.csv"

echo "BASEDIR=${BASEDIR}"
echo "CSVFILE=${CSVFILE}"
echo "DATADIR=${DATADIR}"
echo "HISTORYDIR=${HISTORYDIR}"
echo "INDIR=${INDIR}"
echo "MOVE=${MOVE}"
echo "PROCDATE=${PROCDATE}"
sleep 1

touch ${TMP}

echo "#DD_NAME;SSD;HDD;DRIVES;PROCDATE;REMARKS;" > ${CSVFILE}

ls -1 ${INDIR}/${PROCDATE}* 2> /dev/null |while read INFILE REST1
do
  echo "  ${INFILE}"
# Add
  DD_NAME=`echo ${INFILE}|cut -d\( -f2|cut -d\) -f1|sed 's/-p[0123]//g'|sort -u`

  DRIVES=`grep "drives present" ${INFILE}|awk '{print $1}'`
  LINES=`expr ${DRIVES} + 8`

#  SSD=`grep -B ${LINES} "drives present" ${INFILE}|grep "SSD"|wc -l`
#  HDD=`grep -B ${LINES} "drives present" ${INFILE}|egrep "SAS|SATA"|grep -v SSD |wc -l`
  SSD=`grep "SAS-SSD" ${INFILE}|grep "iB"|wc -l`
  HDD=`egrep "SAS|SATA" ${INFILE}|grep "iB"|grep -v SSD |wc -l`
  TTL_DISKS=`expr ${SSD} + ${HDD}`

#  echo "    ${DD_NAME}: ${DRIVES} drives (${LINES} lines). ${SSD} SSD, ${HDD} HDD"
  if [ ${DRIVES} -eq ${TTL_DISKS} ]; then
    REMARKS=""
    echo "    ${DD_NAME}: ${DRIVES}. ${SSD} SSD, ${HDD} HDD"
    echo "${DD_NAME};${SSD};${HDD};${DRIVES};${PROCDATE}${REMARKS};;" >> ${CSVFILE}
  else
    REMARKS="TTL_DISKS (SSD + HDD) <> DRIVES"
    echo "${DD_NAME};${SSD};${HDD};${DRIVES};${PROCDATE};${REMARKS};" >> ${CSVFILE}
    echo "    ERROR at ${DD_NAME}: ${DRIVES} <> ${TTL_DISKS} (${SSD} SSD, ${HDD} HDD)"|tee -a ${LOG} ${TMP}
    sleep 1
  fi
  if [ ${MOVE} ]; then
    mv ${INFILE} ${HISTORYDIR}/
  fi
done  # ls -1
echo "# `date` ${PGM} v${VER} at `hostname`" >> ${CSVFILE}

if [ "${DECARBONTO}" != "" ];then
  date | mailx -a ${CSVFILE} -s "DataDomains SSD and HDD drives" ${DECARBONTO}
  echo "  Send CSVFILE (${CSVFILE}) to ${DECARBONTO}"|tee -a ${LOG}
fi

if [ -s ${TMP} ] && [ "${MAILTO}" != "" ]; then
  echo "" >> ${TMP}
  echo "# `date` ${PGM} v${VER} at `hostname`" >> ${TMP}
  cat ${TMP}|mailx -s "${PGM}: ERRORs" ${MAILTO}
  echo "  Mailed ERRORs to ${MAILTO}"|tee -a ${LOG}
fi


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

