
#!/bin/sh
# File	: cdot_chk_old_snaps.sh	
# By	: Maarten.deBoer@Atos.net, 230215
# Subject	: Script to check old (NetApp-ONTAP) Snaps
#(0.2),MdB	: Added SFILTER="${1}"
#(0.3),230216	: MOd's for CSV file
#(0.4),230216	: Mod for selecting date-stamp of snapshot-name
#(0.5),230222	: Add USAGE
PGM=`basename $0|cut -d\. -f1`
VER="0.5"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/bin/ssh -n"
RCFILE="${HOME}/etc/${PGM}.rc"

CSV="/tmp/${PGM}_`date +%Y%m%d-%H%M%S`.csv"
CLUSTERS="${HOME}/etc/clusters"
CFILTER="[?]*"
#CFILTER="nlnaf101"
SFILTER="[?]*"
VFILTER="[?]*"
SSFILTER="_20"
MAILTO="maarten.deboer@atos.net"

DATE_OLDER=`date --date="-90days" +%Y%m%d%H%M%S`
#DATE_OLDER=`date --date="-30days" +%Y%m%d%H%M%S`
#DATE_OLDER=`date --date="-10days" +%Y%m%d%H%M%S`


USAGE()
{
  echo "Usage: $PGM [options] "
  echo "  Version: ${VER}"
  echo "  options        :"
  echo "    -e|--etc     : Etc/cluster-file (${CLUSTERS})"
  echo "    -d|--date    : Date older (${DATE_OLDER})"
  echo "    -s|--svm     : SVM filter (${SFILTER})"
  echo "    -ss|--snap   : SnapShot filter (${SSFILTER})"
  echo "    -v|--vol     : VOLume filter (${VFILTER})"
  echo "    -h|--help    : this help"
  echo "    -m|--mail    : send Mail"
  echo "    -V           : Version"
  echo "    -x           : set -x"
  echo "    --mailto     : change MAILTO address & do send mail (${MAILTO})"
}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using it"
  . ${RCFILE}
fi  # RCFILE
# Check options
while [ $# -gt 0 ]
  do
  case ${1} in
    -d | --date) DATE_OLDER=${2}; shift ;;
    -e | --etc) CLUSTERS=${2}; shift ;;
    -m | --mail) MAIL=1 ;;
    --mailto) MAILTO=$2; MAIL=1; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -c) CFILTER=${2}; shift ;;
    -s | --svm) SFILTER=${2}; shift ;;
    -ss | --snap) SSFILTER=${2}; shift ;;
    -v | --vol) VFILTER=${2}; shift ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done


echo "`date` ${PGM} v${VER} started in `hostname`."|tee -a ${LOG} ${TMP}.mail
echo "  CLUSTERS=${CLUSTERS}"| tee -a ${TMP}.mail
echo "  CFILTER=${CFILTER}"| tee -a ${TMP}.mail
echo "  SFILTER=${SFILTER}"| tee -a ${TMP}.mail
echo "  SSFILTER=${SSFILTER}"| tee -a ${TMP}.mail
echo "  VFILTER=${VFILTER}"| tee -a ${TMP}.mail
echo "  DATE_OLDER=${DATE_OLDER}"| tee -a ${TMP}.mail
echo "  MAILTO=${MAILTO}"| tee -a ${TMP}.mail
sleep 1

echo "# CLUSTER;VSERVER;VOLUME;SNAPSHOT;SIZE [GB];SNAP_DATI;SNAP_CREATE_TIME;" > ${TMP}.csv

cat ${CLUSTERS}|grep -v ^#|grep "${CFILTER}"|while read CLUSTER
do
  echo "  ${CLUSTER} ..."
  ${SSH} ${CLUSTER} "vserver show -field vserver,operational-state"| grep running|grep "${SFILTER}"|awk '{print $1}'|while read VSERVER
  do
    ${SSH} ${CLUSTER} "volume show -vserver ${VSERVER} -field volume"|grep "${VFILTER}"|grep ${VSERVER}|grep -v vol0root|awk '{print $2}'|while read VOLUME
    do
#      echo "    CLUSTER=${CLUSTER} VSERVER=${VSERVER} VOLUME=${VOLUME}"
#      ${SSH} ${CLUSTER} "set -showseparator \";\" ; snap show -vserver ${VSERVER} -volume ${VOLUME} -field vserver,volume,snapshot,create-time"|egrep "${SSFILTER}"|sed 's/_/;/g'| while read LINE
      ${SSH} ${CLUSTER} "set -showseparator \";\" -units GB ; snap show -vserver ${VSERVER} -volume ${VOLUME} -field vserver,volume,snapshot,create-time,size"|egrep "${SSFILTER}"| while read LINE
      do
#nlnafsctc02;ctc02_vol0root;4hour3.2023-02-20_1500;"Mon Feb 20 15:00:00 2023";
         SNAPSHOT=`echo ${LINE}|awk -F\; '{print $3}'`
         SNAP_CREATE_TIME=`echo ${LINE}|awk -F\; '{print $4}'|sed 's/"//g'`
#         SIZE_KB=`echo ${LINE}|awk -F\; '{print $5}'|sed 's/KB//g'`
         SIZE_GB=`echo ${LINE}|awk -F\; '{print $5}'|sed 's/GB//g'`
         SNAP_DATI=`date --date="${SNAP_CREATE_TIME}" +%Y%m%d%H%M%S`
#echo "  ${LINE}"
echo -n "."
# Snap-date <= Date To (nn days back)
        if [ "${SNAP_DATI}" = "" ] || ([ "${SNAP_DATI}" != "" ] && [ ${SNAP_DATI} -le ${DATE_OLDER} ]); then
#          echo "${CLUSTER};${VSERVER};${VOLUME};${LINE};${SNAP_DATI};"|tee -a ${TMP}.csv
          echo "${CLUSTER};${VSERVER};${VOLUME};${SNAPSHOT};${SIZE_GB};${SNAP_DATI};${SNAP_CREATE_TIME};"|tee -a ${TMP}.csv
        fi  
      done  # LINE

    done  # VOLUME

  done  # VSERVER

done  # CLUSTER


if [ "${MAILTO}" != "" ]; then
  echo "" >> ${TMP}.mail
  cp ${TMP}.csv ${CSV}
  cat ${TMP}.mail | mailx -a ${CSV} -s "OLD snapshot check (${SFILTER} , ${DATE_OLDER} ) [${PGM} v${VER}]" "${MAILTO}"
  rm ${CSV}
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # ${MAILTO}" != ""


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

