
#!/bin/sh
# File	: cdot_del_vol_offline.sh
# By	: Maarten.deBoer@Atos.net, 160203, 231106
# Subject	: Script to delete offline volumes (after some time)
PGM="`basename $0|cut -d\. -f1`"
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
MAILTO="maarten.deboer@atos.net"
CLUSTERS="${HOME}/etc/clusters"
CSV="/tmp/${PGM}.csv"
#DATA="${HOME}/data/${PGM}.csv"
DATA="${HOME}/data/cdot_vol_offline.csv"
MAIL=""
CFILTER="[?]*"
SFILTER="[?]*"
VFILTER="[?]*"
HOSTNAME=`hostname |cut -d\. -f2`
EXCLFILE="${HOME}/etc/${PGM}.excl"
DELTA_DAYS=14

USAGE()
{
  echo "Usage: $PGM [options] "
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -c         : Cluster filter (${CFILTER})"
  echo "    -d         : Delta days (${DELTA_DAYS})"
  echo "    -s         : Svm filter (${SFILTER})"
  echo "    -v         : Volume filter (${VFILTER})"
  echo "    -e|--etc   : Etc/clusters-file (${CLUSTERS})"
  echo "    -h         : this help"
  echo "    -m|--mail  : send Mail"
  echo "    -V         : Version"
  echo "    -x         : set -x"
  echo "    --mailto   : change MAILTO address & do send mail (${MAILTO})"
}
# Check options
while [ $# -gt 0 ]
  do
  case ${1} in
    -d | --delta) DELTA_DAYS=${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) SFILTER="${2}"; shift ;;
    -v) 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."|tee -a ${LOG}
echo "CLUSTERS=${CLUSTERS}"
echo "DATA=${DATA}"
echo "DELTA_DAYS=${DELTA_DAYS}"
echo "CFILTER=${CFILTER}"
echo "SFILTER=${SFILTER}"
echo "VFILTER=${VFILTER}"
echo "EXCLFILE=${EXCLFILE}"
echo "MAIL=${MAIL}"
echo "MAILTO=${MAILTO}"
sleep 1
# Check if DATA-file. If not exit
if [ ! -f ${DATA} ]; then
  echo "  No DATA-file (${DATA}). Exiting ..."|tee -a ${LOG}
  exit 4
fi
# Check Exclude-file. If not create
if [ ! -f ${EXCLFILE} ]; then
  touch ${EXCLFILE}
fi

echo "# " > ${TMP}
for CLUSTER in `cat ${CLUSTERS}|grep -v ^#|grep "${CFILTER}"`
do
  echo "${CLUSTER} ..."
  ${SSH} ${CLUSTER} 'set -showseparator ";" ; vol show -state offline -fields vserver,volume,state'|grep offline|grep -vf ${EXCLFILE}|grep "${SFILTER}"|grep "${VFILTER}"|grep -v ^#|while read LINE
  do
    VSERVER=`echo ${LINE}|awk -F\; '{print $1}'`
    VOLUME=`echo ${LINE}|awk -F\; '{print $2}'`
    echo "  LINE=${LINE}"
    echo "  VSERVER=${VSERVER} VOLUME=${VOLUME}"

# Check if volume is in DATA-file
    CSV_FILE=`cat ${DATA}|grep -v ^#|grep ${VOLUME}`
    DATE=`cat ${DATA}|grep -v ^#|grep ${VOLUME}|awk -F\; '{print $6}'|sed 's/-//g'`
    DELTA_DATE=`date --date="-${DELTA_DAYS}days" +%Y%m%d`
    echo "    DATE=${DATE} DELTA_DATE=${DELTA_DATE} (${CSV_FILE})"

    if [ "${DATE}" != "" ] && [ ${DATE} -lt ${DELTA_DATE} ]; then
      echo "      ${DATE} < ${DELTA_DATE} = delete ${VOLUME}" |tee -a ${LOG}

    fi

  done  # while read
done  # for FILER

if [ ${MAIL} ]; then
  cp ${TMP} ${CSV}
  LINES="`cat ${CSV}|grep -v ^#|wc -l`"
  echo "${LINES} volume(s), at cDOT, found. See attached file."|mailx -a ${CSV} -s ":${HOSTNAME}: FSOD cDOT offline volumes [${PGM} v${VER}]" ${MAILTO}
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
  rm ${CSV}
fi  # MAIL

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

