
#!/bin/sh
# File	: cdot_rpt_vol_offline.sh
# By	: Maarten.deBoer@Atos.net, 160203
# Subject	: Script to report offline volumes at cDOT
#(0.2)	: Added USAGE
#(0.3)	: Changed Subject
PGM="`basename $0|cut -d\. -f1`"
VER="0.3"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
#MAILTO="maarten.deboer@atos.net fsod@atos.net harold.kuijpers@atos.net andre.hilgersom@atos.net"
MAILTO="maarten.deboer@atos.net"
CLUSTERS="${HOME}/etc/clusters"
CSV="/tmp/${PGM}.csv"
DATA="${HOME}/data/${PGM}.csv"
MAIL=""
FILTER="[?]*"
HOSTNAME=`hostname |cut -d\. -f2`

USAGE()
{
  echo "Usage: $PGM [options] "
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -e|--etc   : Etc/clusters-file (${CLUSTERS})"
  echo "    -f         : filter filername (${FILTER})"
  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
    -e | --etc) CLUSTERS=${2}; shift ;;
    -m | --mail) MAIL=1 ;;
    --mailto) MAILTO=$2; MAIL=1; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -f) FILTER=${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 "FILTER=${FILTER}"
echo "MAIL=${MAIL}"
echo "MAILTO=${MAILTO}"
# Check is DATA-file. If not create
if [ ! -f ${DATA} ]; then
  touch ${DATA}
fi

echo "# Cluster; Vserver;Aggregate;Volume;Size;1st seen at;" > ${TMP}
for CLUSTER in `cat ${CLUSTERS}|grep -v ^#`
do
  echo "${CLUSTER} ..."
  ${SSH} ${CLUSTER} 'set -showseparator " " ; vol show -state offline -fields vserver,aggregate,volume,size,state'|grep nlnaf|while read VSERVER VOLUME AGGREGATE SIZE REST
  do
#    echo "${VSERVER};${AGGREGATE};${VOLUME};${SIZE};${REST}"

# Check if volume is in DATA-file
    ANSW="`grep ${VOLUME} ${DATA}|grep -v ^#|grep ${VSERVER}`"
    if [ "${ANSW}" = "" ]; then
    # This volume is not in DATA-file. So add
      DATE="`date +%Y-%m-%d`"
      echo "${CLUSTER};${VSERVER};${AGGREGATE};${VOLUME};${SIZE};${DATE};" >> ${DATA}
      echo "${CLUSTER};${VSERVER};${AGGREGATE};${VOLUME};${SIZE};${DATE};" >> ${TMP}
    else
      echo "${ANSW};" >> ${TMP}
    fi

  done  # while read
done  # for FILER

if [ ${MAIL} ]; then
  cp ${TMP} ${CSV}
  LINES="`cat ${CSV}|grep -v ^#|wc -l`"
  echo "${LINES} offline 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} finished."|tee -a ${LOG}
exit 0

