
#!/bin/sh
#set -x
# File	: chk_sv_lag.sh
# By	: Ronald ten Broeke 08????(CheckSVLag.sh) , Maarten de Boer, 100115
# Subject	: check snapvault lag on a snapvault filer
# Mod(0.2)	: for-loop added. VAR's change
#
PGM="`basename $0|cut -d\. -f1`"
VERSION="0.2" 
TMP="/tmp/${PGM}.$$"
MAILFILE="${TMP}.mailfile"
MAILTO="gmnl-msscentral@atosorigin.com maarten.deboer@atosorigin.com"
HOSTNAME="`hostname`"
FILERS="${HOME}/etc/filers"
SSH="/usr/bin/ssh -n"

WARNINGLAG=25

for FILER in `cat ${FILERS}|grep -v \^#|awk -F\; '{print $1}'|sort`
do
# check for SnapVault Lic. first. If empty, No License
  LIC="`${SSH} ${FILER} license|grep 'sv_ontap'|awk '{print $2} '|grep -v not`"
  echo "${FILER} (${LIC})..."
  if [ "${LIC}" != "" ]; then

  touch ${TMP}
  ${SSH} ${FILER} snapvault status | grep -v 'Uninitialized'|grep ':' >> ${TMP}
  ${SSH} ${FILER} snapvault status | grep 'restart checkpoint'|grep ':' >> ${TMP}
  for VFILER in `${SSH} ${FILER} vfiler status|grep -v vfiler0|grep running|awk '{ print $1 }'`
  do
    echo "  ${VFILER}..."
    ${SSH} ${FILER} vfiler run ${VFILER} snapvault status | grep -v 'Uninitialized'|grep ':' >> ${TMP}
    ${SSH} ${FILER} vfiler run ${VFILER} snapvault status | grep 'restart checkpoint'|grep ':' >> ${TMP}
  done

  echo "`wc -l ${TMP}` lines"
  cat ${TMP} | while read LINE
  do
  # get lag in hours
  LAG=`echo $LINE |awk '{print $4}'`
  HOUR=`echo $LAG|cut -d : -f1`
  # destination and source qtree
  SRCQTREE=`echo $LINE | awk '{print $1}'`
  DESTQTREE=`echo $LINE | awk '{print $2}'`
  STATE=`echo $LINE | awk '{print $3}'`
  STATUS=`echo $LINE | awk '{print $5}'`
  # remove leading 0 in two digit field
  ZERO=`echo $HOUR|cut -c1`
  if [ "$ZERO" = "0" ]; then
    HOUR=`echo $HOUR|cut -c2`
  fi
  #compare lag to threshold
  if test "${HOUR}" = "-" || test "${HOUR}" -gt ${WARNINGLAG}
  then
    ERROR=`${SSH} ${FILER} -n snapvault status -l ${DESTQTREE} | grep 'Current Transfer Error:' | cut -d: -f2`
    echo "${DESTQTREE}  Lag:${LAG}  Error:${ERROR}  Status: ${STATUS}" >> ${MAILFILE}
  fi
  done
  rm ${TMP}

  fi

done

if [ -s $MAILFILE ]; then
  echo "" >> ${MAILFILE}
  echo "WARNINGLAG=${WARNINGLAG}" >> ${MAILFILE}
  cat ${MAILFILE} 
  cat ${MAILFILE}|mailx -s ":${HOSTNAME}: SnapVault threshold exceeded [${PGM} v${VERSION}]" ${MAILTO}
  echo "Mailed to ${MAILTO} "
  rm ${MAILFILE}
fi

