
#!/bin/sh
# File	: rpt_cpu-sm-sv_cnt.sh
# By	: Maarten.deBoer@Atos.net, 150130
# Subject	: Script to collect (count) & make a report of running (non Idle) SnapVaults
#(0.2)	: Add CPU-load in other data-file & Mail (only)
#(0.3)	: Less HEADERs in DATA-file
#(0.4)	: Added SM to it. And renamed to rpt_sm-sv_cnt.sh
#(0.5)	: Renamed to rpt_cpu-sm-sv_cnt.sh
PGM="`basename $0|cut -d\. -f1`"
VER="0.5"
TMP="/tmp/${PGM}.$$"
HOSTNAME="`hostname|cut -d\. -f1`"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
MAIL=""
MAILTO="maarten.deboer@atos.net"
FILTER="[?]*"
DATE="`date +%Y-%m-%d`"
DATI="`date +%Y-%m-%d' '%H:%M`"
DATASM="${HOME}/data/out/${PGM}-sm_${DATE}.csv"
DATASV="${HOME}/data/out/${PGM}-sv_${DATE}.csv"
DATACPU="${HOME}/data/out/${PGM}-cpu_${DATE}.csv"
FILERS="${HOME}/etc/filers"

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "  Version: ${VERSION}"
  echo "  options          :"
  echo "    -e             : Etc-filername (${FILERS})"
  echo "    -f             : Filter filername (${FILTER})"
  echo "    -h | --help    : this help"
  echo "    -m | --mail    : do send Mail (only)"
  echo "    --mailto       : change MAILTO address & do send mail (${MAILTO})"
  echo "    -V             : Version"
  echo "    -x             : set -x"
}

# Check options
while [ ${#} -gt 0 ]
  do
  case ${1} in
    -e) FILERS=${2}; shift ;;
    -f) FILER=${2}; shift ;;
    -m | --mail) MAIL=1 ;;
    -h | --help) USAGE; exit 1 ;;
    --mailto) MAILTO=${2}; MAIL=1; shift ;;
    -V) echo "${PGM}: v${VERSION}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

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

if [ ! -f ${FILERS} ]; then
  echo "  NO ETC-filers-file (${FILERS}) found. Exiting ..."|tee -a ${OUT}
  exit 2
fi

if [ ${MAIL} ]; then
  date | mailx -a ${DATASM} -a ${DATASV} -a ${DATACPU} -s "@${HOSTNAME}: Snap-Mirror & -Vault running report [${PGM} v${VER}]" ${MAILTO}
  echo "`date` mailed to ${MAILTO}"|tee -a ${LOG}
else

  touch ${DATASM} ${DATASV} ${DATACPU}

  SVCNTSTR="${DATI};"
  SMCNTSTR="${DATI};"
  CPULOADSTR="${DATI};"
  export SVCNTSTR SMCNTSTR CPULOADSTR 
  HEADER="DateTime; "
  for FILER in `cat ${FILERS}|grep -v \^#|awk -F\; '{print $1}'|grep "${FILTER}"`
  do
    if [[ `${SSH} ${FILER} version|grep -c Cluster-Mode` -eq 1 ]]; then
# cDOT
      echo  "${FILER} cDOT"
# Get information /node
      ${SSH} ${FILER} 'node show -field node'|grep -v '\--'|grep '-'|while read NODE REST
      do
        HEADER="${HEADER} ${NODE};"
#        CPULOAD="`${SSH} ${FILER} system node run -node ${NODE} sysstat -u -c 1 5|awk '{print $1}'|grep '%'`"
        CPULOAD="`${SSH} ${NODE} 'system node run -node local sysstat -u -c 1 5'|awk '{print $1}'|grep '%'`"
        CPULOADSTR="${CPULOADSTR}${CPULOAD};"
        SMCNT="`${SSH} ${NODE} 'set -showseparator ";" ; snapmirror show -field type,status'|grep -v Idle|grep \;DP\;|wc -l`"
        SMCNTSTR="${SMCNTSTR}${SMCNT};"
        SVCNT="`${SSH} ${NODE} 'set -showseparator ";" ; snapmirror show -field type,status'|grep -v Idle|grep \;XDP\;|wc -l`"
        SVCNTSTR="${SVCNTSTR}${SVCNT};"
        echo "${FILER} / ${NODE} : ${CPULOAD} - ${SMCNT} / ${SVCNT}"
      done  # NODE
    else
# 7-mode
      HEADER="${HEADER} ${FILER};"
      CPULOAD="`${SSH} ${FILER} sysstat -u -c 1 5| awk '{print $1}'|grep '%'`"
      CPULOADSTR="${CPULOADSTR}${CPULOAD};"
      SMCNT="`${SSH} ${FILER} snapmirror status|grep Snapmirrored|grep -v Idle|wc -l`"
      SMCNTSTR="${SMCNTSTR}${SMCNT};"
      SVCNT="`${SSH} ${FILER} snapvault status|grep Snapvaulted|grep -v Idle|wc -l`"
      SVCNTSTR="${SVCNTSTR}${SVCNT};"
      echo "${FILER} / ${NODE} : ${CPULOAD} - ${SMCNT} / ${SVCNT}"
    fi  # CDOT

  done  # FILER

  HR="`date +%H`"
  if [ ${HR} -eq 0 ] || [ ${HR} -eq 12 ]; then
    echo ${HEADER} |tee -a ${DATASM}
    echo ${HEADER} |tee -a ${DATASV}
    echo ${HEADER} |tee -a ${DATACPU}
  fi  # HR
  echo ${SMCNTSTR} |tee -a ${DATASM}
  echo ${SVCNTSTR} |tee -a ${DATASV}
  echo ${CPULOADSTR} |tee -a ${DATACPU}
  
fi  # MAIL

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

