
#!/bin/sh
# File	: chk_migr-sm_config.sh
# By	: Maarten.deBoer@Atos.net, 120123
# Subject	: Script to check SM for FSOD-mgr configs. CSV will be mailed to MAILTO AND creating a NEWSH script for SnapMirroring
#set -x
PGM="`basename $0|cut -d\. -f1`"
VERSION="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
FILERS="${HOME}/etc/filers"
MAILTO="maarten.deboer@atos.net"
HOSTNAME="`hostname|cut -d\. -f1`"
FILTER="[1234567890]*"
DATI="`date +%Y%m%d_%H%M%S`"

# DataProt filer need NOT to be checked.
DPFILER="hwnaf01"
# May NOT be the save as DESTFILER

CUST="slb"
VFILERNR="01"
SRCFILER="nlnaf02" 
DESTFILER="nlnaf62"

if [ $# -gt 1 ]; then
  CUST=${1}
  VFILERNR=${2}
fi
case ${CUST}${VFILERNR} in
  slb01) 
SRCFILER="nlnaf02" 
DESTFILER="nlnaf62"
  ;;
  slb03) 
SRCFILER="nlnaf03" 
DESTFILER="nlnaf61"
  ;;
  slb04) 
SRCFILER="nlnaf04" 
DESTFILER="nlnaf62"
  ;;
  slb07) 
SRCFILER="nlnaf25" 
DESTFILER="nlnaf59"
  ;;
  slb08) 
SRCFILER="nlnaf26" 
DESTFILER="nlnaf60"
  ;;
  *)
  echo "Selection ${CUST}${VFILERNR} NOT known. Exiting ..."
  exit 4
  ;;

esac

NEWSH="${HOME}/${CUST}/create_sm-${CUST}${VFILERNR}.sh"
FILTER="${CUST}${VFILERNR}"

echo "Customer= ${CUST}"
echo "Vfilenr= ${VFILERNR}"
echo "Filter= ${FILTER}"
echo "Source Filer=${SRCFILER}"
echo "Destination Filer=${DESTFILER}"

sleep 2
mkdir ${HOME}/${CUST}/
cp /dev/null ${NEWSH}

# After every 10 SM's a sleep
CMDCNT=0

echo "# Filer/vFiler;Volume;Qtree;Q-type;Q-mode;Snap Vault/Mirror;S-source;S-destination;Last update;Status;;First(oldest) Snap;" > ${TMP}

${SSH} ${SRCFILER} snapmirror status | grep ${DESTFILER} > ${TMP}.sm
${SSH} ${SRCFILER} vfiler status|grep running|grep ${FILTER}|awk '{print $1}'|while read VFILER
do
  echo "${SRCFILER}/${VFILER};"|tee -a ${TMP}
# Getting Qtree list. From this list every Qtree is checked for SM / SV.
  ${SSH} ${SRCFILER} vfiler run ${VFILER} qtree status|grep -v '^$'|egrep -v '=====|Volume|-----'|awk '{print $1,$2,$3,$5}'|grep -v 'unix enabled'|awk '{print $1,$2,$3,$4}'|while read VOLUME QTREE TYPE MODE
  do
echo "${VOLUME} ${QTREE} ${TYPE} ${MODE}"
sleep 1
    SM="`grep \"${VOLUME}/${QTREE}\ " ${TMP}.sm|grep -v ${DPFILER}|awk '";"{print $1";"$2";"$4";"$5";"$6}'`"
echo "SM=${SM}" 
    if [ "${SM}" = "" ] ; then
      QRPT="`${SSH} ${SRCFILER} vfiler run ${VFILER} quota report|grep ${QTREE}|awk '{print $5";"$6";("$3"/"$4");"}'`"
# Check is Volume/Qtree = equal. If not, then EMPTY
      CHECK="`echo ${QRPT}|grep "${VOLUME}/${QTREE}"|awk -F\; '{print $1";"$2}'`"
# If EMPTY then not OK. Quota <> Volume/Qtree
      if [ "${CHECK}" = "" ]; then
        CHECK="Volume/Qtree:${VOLUME}/${QTREE} <> Quota report:${QRPT}"
      fi
      NEED="`echo ";${VOLUME}/${QTREE};${TYPE};${MODE};${CHECK};"|grep ';normal;'`"
      echo ${NEED} >> ${TMP}.need
      echo ";${VOLUME};${QTREE};${TYPE};${MODE};-;;" >> ${TMP}

      if [ "${NEED}" != "" ]; then
       # Add to create-sh
#echo "QRPT=${QRPT}"
        NEWSIZEKB="`echo "${QRPT}" | awk -F\; '{print $2}'`"
## CNT=`expr $CNT + 1`
##echo "${NEWSIZEKB}KB "
#        echo "#ssh ${DPFILER} vol size ${DPVOL} +${NEWSIZEKB}k" >> ${NEWSH}
        echo "ssh ${DESTFILER} snapmirror initialize -S ${SRCFILER}-sm:/vol/${VOLUME}/${QTREE} /vol/${VOLUME}/${QTREE} " >> ${NEWSH}
        CMDCNT=`expr ${CMDCNT} + 1`
# After every 10 SM's a sleep
        if [ ${CMDCNT} -gt 10 ]; then
          echo "sleep 300" >> ${NEWSH}
          CMDCNT=0
        fi
      fi  # if [ "${NEED}" != "" ]; then

    fi  # if [ "${SM}" = "" ] 

    if [ "${SM}" != "" ]; then
# Get the 1st, oldest snap. So retention can be determined
      SNAPFILER="`echo ${SM}|awk -F\; '{print $2}'|cut -d\: -f1`"
      SNAPVOLUME="`echo ${SM}|awk -F\; '{print $2}'|cut -d\: -f2|cut -d\/ -f3`"
#echo "SF=${SNAPFILER} SVol=${SNAPVOLUME}"
      FIRSTSNAP="`${SSH} ${SNAPFILER} snap list ${SNAPVOLUME}|grep vault|cut -d\% -f5|awk '{print $5}'|tail -1`"
      echo ";${VOLUME};${QTREE};${TYPE};${MODE};M;${SM};${FIRSTSNAP};" >> ${TMP}
    fi

  done  # vfiler run ${VFILER} qtree status
  echo ";" >> ${TMP}
done  #  vfiler status|grep running

echo " ;"
echo "# Produced by ${PGM} v${VERSION} at `hostname` at `date`"|tee -a ${TMP}

cat ${TMP}|uuencode ${PGM}-${FILTER}-${DATI}.csv|mailx -s "Check Qtrees vs Migr-SM (FILTER=${FILTER})[${PGM} v${VERSION}]" ${MAILTO}

echo "Mailed to ${MAILTO} (with FILTER=${FILTER}) ."

cp ${TMP}.sm /tmp/${PGM}.sm
rm ${TMP} ${TMP}.sm 
exit 0

