
#!/bin/sh
# File	: rpt_luns.sh
# By	: Maarten.deBoer@Atos.net, 170503
# Subject	: Script to report LUNs (from NetApp-filers)
# (0.2),170503	: Added lun show -v
PGM="`basename $0|cut -d\. -f1`"
VER="0.2"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
FILERS="${HOME}/etc/filers"
FILTER="[?]*"
HOSTNAME="`hostname|cut -d\. -f1`"
MAIL=""
MAILTO="maarten.deboer@atos.net"
SSH="/usr/bin/ssh -n"
DATI="`date +%Y-%m-%d_%H-%M-%S`"
CSV="${PGM}_${HOSTNAME}_${DATI}.csv"

USAGE()
{
  echo "Usage: ${PGM} <options>"
  echo "  Version: ${VER}"
  echo "  options        :"
  echo "    -e|--etc     : Etc/filers-file (${FILERS})"
  echo "    -f           : Filter filername (${FILTER})"
  echo "    -h|--help    : this Help"
  echo "    -m|--mail    : do send Mail"
  echo "    -V           : show Version"
  echo "    -x           : set -x"
  echo "    --mailto     : change MAILTO address & do send mail (${MAILTO})"
}
## MAIN
# Check options
if [ $# -eq 0 ]; then
  echo "No option(s) given. So not to know what to do. Exiting..."; echo; USAGE; exit 1
fi
while [ $# -gt 0 ]
  do
  case $1 in
    -f) FILTER=$2; shift ;;
    -m | --mail) MAIL=1 ;;
    -e | --etc) FILERS=$2; shift ;;
    --mailto) MAILTO=$2; MAIL=1; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known. Exiting..."; echo; USAGE; exit 1 ;;
  esac
    shift
done

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

echo "# FILER;LUN;SIZE;OCCUPIEDSIZE;R/W;ONLINE;MAPPED;SPACERESERV;TYPE;MAPS;CREATIME;" > ${TMP}

for FILER in `cat ${FILERS}|grep -v \^#|awk -F\; '{print $1}'|sort|grep "${FILTER}"`
do
  ping -c 1 ${FILER}
  EC=${?}
  if [ ${EC} -eq 0 ]; then
    ${SSH} ${FILER} lun show|grep '/vol/'|awk '{print $1}'| while read LUN REST
    do
      echo "${FILER} ${LUN} ..."
      SIZE="`${SSH} ${FILER} lun show -v ${LUN}|grep '/vol/'|awk '{print $2}' `"
      RW="`${SSH} ${FILER} lun show -v ${LUN}|grep '/vol/'|awk '{print $4}' `"
      ONLINE="`${SSH} ${FILER} lun show -v ${LUN}|grep '/vol/'|awk '{print $5}' `"
      MAPPED="`${SSH} ${FILER} lun show -v ${LUN}|grep '/vol/'|awk '{print $6}' `"
      SPACERESERV="`${SSH} ${FILER} lun show -v ${LUN}|grep 'Space Reservation:'|cut -d\: -f2 `"
      TYPE="`${SSH} ${FILER} lun show -v ${LUN}|grep 'Multiprotocol Type:'|cut -d\: -f2 `"
      MAPS="`${SSH} ${FILER} lun show -v ${LUN}|grep 'Maps:'|cut -d\: -f2 `"
      OCCUPIEDSIZE="`${SSH} ${FILER} lun show -v ${LUN}|grep 'Occupied Size:'|cut -d\: -f2|awk '{print $1}' `"
      CREATIME="`${SSH} ${FILER} lun show -v ${LUN}|grep 'Creation Time:'|cut -d\: -f2 `"

      echo "${FILER};${LUN};${SIZE};${OCCUPIEDSIZE};${RW};${ONLINE};${MAPPED};${SPACERESERV};${TYPE};${MAPS};${CREATIME};" >> ${TMP}

    done
  else
    echo "${FILER}; No connectivity;" >> ${TMP}
  fi  # EC
done  # FILER

if [ ${MAIL} ]; then
  cp ${TMP} /tmp/${CSV}
  date | mailx -a /tmp/${CSV} -s ":${HOSTNAME}: LUN report [${PGM} v${VER}]" ${MAILTO}
  echo "  Mailed ${CSV} to ${MAILTO}"|tee -a ${LOG}
  rm /tmp/${CSV}
fi  # MAIL


rm ${TMP}
exit 0

