
#!/bin/sh
# File	: rpt_vol_offline.sh
# By	: Maarten.deBoer@Atoet.net, 150619
# Subject	: Script to report offline volumes
#(0.2)	: Added size in CSV
#(0.3)	: Added since date
#(0.4)	: Added USAGE
#(0.5)	: Changed subject
PGM="`basename $0|cut -d\. -f1`"
VER="0.5"
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"
MAILTO="maarten.deboer@atos.net"
FILERS="${HOME}/etc/filers"
CSV="/tmp/${PGM}.csv"
DATA="${HOME}/data/${PGM}.csv"
FILTER="[?]*"
MAIL=""
HOSTNAME=`hostname|cut -d\. -f2`

USAGE()
{
  echo "Usage: $PGM [options] "
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -e|--etc  : Etc/filers-file (${FILERS})"
  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) FILERS=${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 "DATA=${DATA}"
echo "FILERS=${FILERS}"
echo "MAIL=${MAIL}"
echo "MAILTO=${MAILTO}"
# Check is DATA-file. If not create
if [ ! -f ${DATA} ]; then
  touch ${DATA}
fi

echo "# Filer;Volume;Size;1st seen at;" > ${TMP}
for FILER in `cat ${FILERS}|grep -v ^#|grep ${FILTER}`
do
  echo "${FILER} ..."
  ${SSH} ${FILER} vol status|grep offline|awk '{print $1}'|while read VOL REST
  do
    echo "${FILER} ..."
    SIZE="`${SSH} ${FILER} vol size ${VOL}|awk '{print $8}'`"
# Check if volume is in DATA-file
    ANSW="`grep ${VOL} ${DATA}|grep -v ^#|grep ${FILER}`"
    if [ "${ANSW}" = "" ]; then
    # This volume is not in DATA-file. So add
      DATE="`date +%Y-%m-%d`"
      echo "${FILER};${VOL};${SIZE};${DATE};" >> ${DATA}
      echo "${FILER};${VOL};${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) found. See attached file."|mailx -a ${CSV} -s "@${HOSTNAME}: FSOD 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

