
#!/bin/sh
# File	":
# By	: Maarten.deBoer@Atos.net, 200827
# Subject	: Script to check diff between AFSP and CMDB in CSV-file
#
PGM=`basename $0|cut -d\. -f1`
VER="0.2"
TMP="/tmp/${PGM}.$$"

BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
LOG="${BASEDIR}/log/${PGM}.log"
DATADIR="${BASEDIR}/data"
ALLCOUNRIESFILE="/tmp/${PGM}.all"
HOSTNAME=`hostname |cut -d\. -f1`

INDIR="${HOME}/afsp-cmdb"
CSV_IN="${INDIR}/NetApp-Install-Base-EOSLXv0.8_SB.csv"
IN_AFSP="/tmp/${PGM}_cmdb-in-afsp_`date +%Y-%m-%d`.csv"
NOT_IN_AFSP="/tmp/${PGM}_cmdb-not-in-afsp_`date +%Y-%m-%d`.csv"
AFSP_ONLY="/tmp/${PGM}_afsp-only_`date +%Y-%m-%d`.csv"

MAIL=""
MAILTO="maarten.deboer@atos.net"
MAIL=1

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

if [ ! -f ${CSV_IN} ]; then
  echo "  NO CSV_IN (${CSV_IN}). So, exiting ..."|tee -a ${LOG}
  exit 3
fi

touch ${TMP}

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

if [ ! -f ${ALLCOUNRIESFILE} ]; then
  echo "  Collecting of all countries; hostname & ser.nr"|tee -a ${LOG}
  echo "  And filling ALLCOUNRIESFILE (${ALLCOUNRIESFILE}) for re-usage"|tee -a ${LOG}
  echo "# {COUNTRY};{DB_CONTROLER_NAME};{DB_SERIAL_NUMBER};{DB_SYSTEM_ID};" > ${ALLCOUNRIESFILE}

  for COUNTRY in `cd /appl/mdr/mdrglob/afsp/; ls -1d ??`
  do
    echo -n " ${COUNTRY} "
    for DBFILE in `ls -1 /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database/*.asc`
    do
      DB_READ ${DBFILE}
      echo "${COUNTRY};${DB_CONTROLER_NAME};${DB_SERIAL_NUMBER};${DB_SYSTEM_ID};" >> ${ALLCOUNRIESFILE}
    done  # DBFILE
  done  # COUNTRY
  echo ""
else
  echo "  ALLCOUNRIESFILE (${ALLCOUNRIESFILE}) found. Re-using this"|tee -a ${LOG}
fi  # -f ${ALLCOUNRIESFILE}


echo "AFSP_COUNTRY;AFSP_CONTR_NAME;AFSP_SER_NR;" > ${AFSP_ONLY}

# Check (read) AFSP vs CMDB
echo "  Readding AFSP ..."
cat ${ALLCOUNRIESFILE}| while read LINE
do
  echo ${LINE}
  AFSP_COUNTRY=`echo ${LINE}|awk -F\; '{print $1}'`
  AFSP_CONTR_NAME=`echo ${LINE}|awk -F\; '{print $2}'`
  AFSP_SER_NR=`echo ${LINE}|awk -F\; '{print $3}'`

# To check if system is in (CMDB)_CSV_IN-file.
# If not, then system is ONLY in AFSP
  grep ${AFSP_SER_NR} ${CSV_IN}
  EC=${?}
  if [ ${EC} -ne 0 ]; then
    if [ "${LINE}" != "" ]; then
      echo "${LINE}"|tee -a ${AFSP_ONLY}
    fi
  fi

done  # cat ${ALLCOUNRIESFILE}


# 1st line of CSV_IN
FIRST_LINE=`head -1 ${CSV_IN}`
echo ${FIRST_LINE}
echo ${FIRST_LINE} > ${IN_AFSP}
echo ${FIRST_LINE} > ${NOT_IN_AFSP} 
sleep 1

# Check (read) CMDB vs AFSP
echo "  Reading (CMDB-)CSV (${CSV_IN}) ..."
cat ${CSV_IN}|grep -v ^#|while read LINE
do
#  echo "${LINE}"
#  echo -n "."
  CSV_SER_NR=`echo ${LINE}|awk -F\; '{print $1}'`
  CSV_COUNTRY=`echo ${LINE}|awk -F\; '{print $6}'`
  CSV_CONTR_NAME=`echo ${LINE}|awk -F\; '{print $11}'`

  grep "${CSV_CONTR_NAME}\;${CSV_SER_NR}" ${ALLCOUNRIESFILE} > /dev/null
  EC=${?}
  if [ ${EC} -eq 0 ]; then
    echo "${CSV_CONTR_NAME}|${CSV_SER_NR}|${CSV_COUNTRY}|"
    if [ "${LINE}" != "" ]; then
      echo "${LINE}"|tee -a ${IN_AFSP}
    fi
  else
    if [ "${LINE}" != "" ]; then
      echo "${LINE}"|tee -a ${NOT_IN_AFSP}
    fi
  fi

#  echo "|${CSV_SER_NR}|${CSV_CONTR_NAME}|${CSV_COUNTRY}|"

done  # read LINE
#echo ""

if [ ${MAIL} ]; then
  echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${IN_AFSP}
  echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${NOT_IN_AFSP}
  echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${AFSP_ONLY}
  echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" | mailx -a ${IN_AFSP} -a ${NOT_IN_AFSP} -a ${AFSP_ONLY} -s "Check CMDB vs AFSP [${PGM} v${VER}]" ${MAILTO}
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAIL



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

