
#!/bin/sh
# File	: compare-filer-lists.sh
# By	: Maarten.deBoer@atos.net, 150914
# Subject	: Script to compare the NetApp-filer-list with the Atos-filer-list
#set -x
#(0.2)	: Mod `grep -vi WORLDLINE`
#(0.3)	: Mod; Check ASUP by filername in stead of ser.nr
#(0.4)	: Add Lovercase CONTROLERNAME
#(0.5)	: Mod for NetApp-filer list of 2016 & Added SYSTEMID
#(0.6)	: Mod; removed SYSTEMID at 1st file. Otherwise it can not be undoubled (sort -u) & Mod COUNTRY-search
PGM="`basename $0|cut -d\. -f1`" 
VER="0.6"
TMP="/tmp/${PGM}.$$"

BASEDIR="`pwd | sed 's/scripts//'|sed 's/bin//'`"
NETAPPHOME="/appl/mdr/mdrglob/afsp/netapp"
LOG="${BASEDIR}/log/${PGM}.log"

MAILTO="maarten.deboer@atos.net"

# Input
#NETAPPLIST1="/appl/mdr/mdrglob/afsp/netapp/data/netapp-filer-list-active_2016-09-06.csv"
NETAPPLIST1="/appl/mdr/mdrglob/afsp/netapp/data/netapp-filer-list_2016-09-06.csv"
# $1 = SYSTEMNAME
# $2 = SERNR
# $3 = MAILADDR
# $4 = COUNTRY
# $5 = TLD
NETAPPLIST2="/appl/mdr/mdrglob/afsp/netapp/data/netapp-filer-list-decom_2016-09-06.csv"
ASUPLIST="/appl/mdr/mdrglob/afsp/glob/data/asup-data.csv"

# Output
ATOSLIST="/appl/mdr/mdrglob/afsp/glob/data/atos-filer-list.csv"
     OUT="/appl/mdr/mdrglob/afsp/glob/data/compare-filer-list.csv"

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

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

DB_FUNC_VER

if [ ! -f ${NETAPPLIST1} ]; then
  echo "NO ${NETAPPLIST1} found. So exiting ..."|tee -a ${LOG}
  exit 2
fi
if [ ! -f ${NETAPPLIST2} ]; then
  echo "NO ${NETAPPLIST2} found. So exiting ..."|tee -a ${LOG}
  exit 2
fi
if [ ! -f ${ASUPLIST} ]; then
  echo "NO ${ASUPLIST} found. So exiting ..."|tee -a ${LOG}
  exit 2
fi


echo "  Atos-list generated from countries"|tee -a ${LOG}
echo "# Atos-list generated from countries `date`" > ${ATOSLIST}

echo "# DB_CONTROLER_NAME;DB_SERIAL_NUMBER;DB_MODEL_NAME;DB_OS_VERSION;COUNTRY; " >> ${ATOSLIST}

for COUNTRY in `cd /appl/mdr/mdrglob/afsp/; ls -1d ??`
do
  echo "${COUNTRY} ..."
  # If database, then cd to database
  if [ -d /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database ]; then
    cd /appl/mdr/mdrglob/afsp/${COUNTRY}/data/database
    ls -1 | while read DBFILE
    do
      DB_READ ${DBFILE}
      echo "${DB_CONTROLER_NAME};${DB_SERIAL_NUMBER};${DB_SYSTEM_ID};${DB_MODEL_NAME};${DB_OS_VERSION};${COUNTRY}; " >> ${ATOSLIST}
    done  # FILE
  fi  # database
done  # ${COUNTRY}


echo "  Processing NetApp & ASUP-list ..."|tee -a ${LOG}

# Creating grandlist with SERNR , SYSTEMNAME
echo "# `date` ${PGM} v${VER} " > ${TMP}
# $2 = SERIAL_NUMBER, $1=CONTROLER_NAME
cat ${ATOSLIST}|grep -v ^#|awk -F\; '{print $2";"$1";"}' >>  ${TMP}
# $6 = SERIAL_NUMBER, $1 = CONTROLER_NAME
cat ${ASUPLIST}|grep -v ^#|awk -F\; '{print $6";"$1}' >>  ${TMP}
# Get Ser.Nr & filernames. And lowercase those
# $2 = SERIAL_NUMBER, $1 = CONTROLER_NAME
cat ${NETAPPLIST1}|grep -v ^#|grep -vi worldline|awk -F\; '{print $2";"$1";"}'|tr '[A-Z]' '[a-z]' >>  ${TMP}
# $22 = SERIAL_NUMBER, $25 = CONTROLER_NAME
cat ${NETAPPLIST2}|grep -v ^#|grep -vi worldline|awk -F\; '{print $22";"$25";"}'|tr '[A-Z]' '[a-z]' >>  ${TMP}

echo "  Processing OUT-file (${OUT}) ..."|tee -a ${LOG}

echo "# SERNR;CONTROLERNAME;ATOSFOUND;COUNTRY0;ASUPFOUND;NETAPP1FOUND;COUNTRY1;REMARK1;NETAPP2FOUND;COUNTRY2;REMARK2;" > ${OUT}

cat ${TMP}|grep -v ^#|sort -u|while read LINE
do
  SERNR="`echo ${LINE}|awk -F\; '{print $1}'`"
  if [ "${SERNR}" = "" ]; then
    SERNR="*"
  fi
  CONTROLERNAME="`echo ${LINE}|awk -F\; '{print $2}'|tr '[A-Z]' '[a-z]'|sed 's/ //g'`"
  if [ "${CONTROLERNAME}" = "unknown" ] || [ "${CONTROLERNAME}" = "" ]; then
    CONTROLERNAME="*"
  fi

  ASUPFOUND="`grep -i ${CONTROLERNAME} ${ASUPLIST}|grep -i ${CONTROLERNAME}`"
  if [ "${ASUPFOUND}" != "" ]; then
    ASUPFOUND="x"
  fi
  COUNTRY0=""
  ATOSFOUND="`grep ${SERNR} ${ATOSLIST}|grep -i ${CONTROLERNAME}`"
  if [ "${ATOSFOUND}" != "" ]; then
    ATOSFOUND="x"
    COUNTRY0="`grep ${SERNR} ${ATOSLIST}|awk -F\; '{print $6}'|head -1`"
  fi

  COUNTRY1=""
  REMARK1=""
  NETAPP1FOUND="`grep ${SERNR} ${NETAPPLIST1}|grep -i ${CONTROLERNAME}`"
  if [ "${NETAPP1FOUND}" != "" ]; then
    NETAPP1FOUND="x"
# $5 = TLD
# $3 = Mailaddress
    COUNTRY1="`grep ${SERNR} ${NETAPPLIST1}|awk -F\; '{print $5}'|head -1`"
    REMARK1="`grep ${SERNR} ${NETAPPLIST1}|awk -F\; '{print $3}'|head -1`"
  fi

  COUNTRY2=""
  REMARK2=""
  NETAPP2FOUND="`grep ${SERNR} ${NETAPPLIST2}|grep -i ${CONTROLERNAME}`"
  if [ "${NETAPP2FOUND}" != "" ]; then
    IDXA="`/usr/bin/expr index \"${NETAPP2FOUND}\" '@'`"
    if [ ${IDXA} -ne 0 ]; then
      COUNTRY2="?"
# ADDR2 is part After @
      ADDR2="`/usr/bin/expr substr \"${NETAPP2FOUND}\" ${IDXA} 50|cut -d\; -f1`"
# find prev ;
      RUN=1
      IDX2=${IDXA}
      ADDR1=""
      while [ ${RUN} ]
      do
        CHAR="`/usr/bin/expr substr \"${NETAPP2FOUND}\" ${IDX2} 1`"
        if [ "${CHAR}" != ";" ]; then
          IDX2="`expr ${IDX2} - 1`"
        else
          RUN=""
        fi  # ;
      done
      LEN="`expr ${IDXA} - ${IDX2}`"
      ADDR1="`/usr/bin/expr substr \"${NETAPP2FOUND}\" ${IDX2} ${LEN}|cut -d\; -f2`"
    fi  # IDXA

    NETAPP2FOUND="x"
    REMARK2="Decomm: ${ADDR1}@${ADDR2}"
  fi  # NETAPP2FOUND

# echo "# SERNR;CONTROLERNAME;ATOSFOUND;COUNTRY0;ASUPFOUND;NETAPP1FOUND;COUNTRY1;NETAPP2FOUND;COUNTRY2;" > ${OUT}
  echo "${SERNR};${CONTROLERNAME};${ATOSFOUND};${COUNTRY0};${ASUPFOUND};${NETAPP1FOUND};${COUNTRY1};${REMARK1};${NETAPP2FOUND};${COUNTRY2};${REMARK2}"|tee -a ${OUT}

done  # LINE

echo "# ASUPLIST=${ASUPLIST}" >> ${OUT}
echo "# ATOSLIST=${ATOSLIST}" >> ${OUT}
echo "# NETAPPLIST1=${NETAPPLIST1}" >> ${OUT}
echo "# NETAPPLIST2=${NETAPPLIST2}" >> ${OUT}


date | mailx -a ${OUT} -s "AFSP: [${PGM} v${VER}]" ${MAILTO}

#rm ${TMP}
echo "`date` ${PGM} Finished."|tee -a ${LOG}
exit 0

