
#/bin/ksh
# File 	: get_vol_quota_advise.ksh
# By	: Maarten.deBoer@Atos.net
# Subject	: Script to calculate volume size from Quotas+snapshot
#
PGM="`basename $0|cut -d\. -f1`"
TMP="/tmp/${TMP}.$$"
LOG="$HOME/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
FILERS="${HOME}/etc/filers_ibm"
FILTER="slb"
MAILTO="maarten.deboer@atos.net"
DATI="`date +%Y-%m-%d_%H-%M`"
CSV="${PGM}-${FILTER}_${DATI}.csv"
TTLQTUSED=0
TTLQTLIMIT=0

echo "`date` ${PGM} started, with filter=${FILTER} at ${DATI}"|tee -a ${LOG}
touch ${TMP}
echo "# FILER;VFILER;VOL;VOLTOTAL;VOLUSED;SNAPUSED;QTREE;QTUSED;QTLIMIT;TTLQTUSED;TTLQTLIMIT;VOLADVISE;DELTA(Total-Advise)[GB];"|tee -a ${TMP}

for FILER in `cat ${FILERS}|grep -v \^#|awk -F\; '{print $1}'`
do
  echo ${FILER}
  ${SSH} ${FILER} vfiler status |grep running|grep ${FILTER}|awk '{print $1}'|while read VFILER
  do 
# Get Quota report first (in TMP)
    ${SSH} ${FILER} vfiler run ${VFILER} quota report > ${TMP}.quotas
    ${SSH} ${FILER} vfiler run ${VFILER} df -k > ${TMP}.df-k
# Volume loop
    ${SSH} ${FILER} vfiler run ${VFILER} vol status|grep online|grep -v vfiler|awk '{print $1}'|while read VOL
    do
# Qtree-loop
      TTLQTUSED=0
      TTLQTLIMIT=0
      ${SSH} ${FILER} vfiler run ${VFILER} qtree status ${VOL}|egrep 'ntfs|unix'|grep -v '       unix'|awk '{print $2}'|while read QTREE
      do
# Need to have a transport file
        cp /dev/null ${TMP}.var
        QTUSED="`grep ${QTREE} ${TMP}.quotas|awk '{print $5}'`"
        QTLIMIT="`grep ${QTREE} ${TMP}.quotas|awk '{print $6}'`"
        if [ "${QTUSED}" != "" ]; then
# Check if not empty
          let "TTLQTUSED = ${TTLQTUSED} + ${QTUSED}"
        fi
        if [ "${QTLIMIT}" != "" ]; then
# Check if not empty
          let "TTLQTLIMIT = ${TTLQTLIMIT} + ${QTLIMIT}"
        fi

        echo "${FILER};${VFILER};${VOL};;;;${QTREE};${QTUSED};${QTLIMIT};${TTLQTUSED};${TTLQTLIMIT};;;"|tee -a ${TMP}
        echo "TTLQTUSED=${TTLQTUSED}" >> ${TMP}.var
        echo "TTLQTLIMIT=${TTLQTLIMIT}" >> ${TMP}.var

      done  # Qtree-loop
      VOLTOTAL="`grep ${VOL} ${TMP}.df-k|grep -v snapshot|awk '{print $2}'|sed 's/KB//g'`"
      VOLUSED="`grep ${VOL} ${TMP}.df-k|grep -v snapshot|awk '{print $3}'|sed 's/KB//g'`"
      SNAPUSED="`grep ${VOL} ${TMP}.df-k|grep snapshot|awk '{print $3}'|sed 's/KB//g'`"
      TTLQTUSED="`grep TTLQTUSED ${TMP}.var|cut -d\= -f2`"
      TTLQTLIMIT="`grep TTLQTLIMIT ${TMP}.var|cut -d\= -f2`"

      let "VOLADVISE=${TTLQTLIMIT} + ${SNAPUSED}"
      let "DELTA=${VOLTOTAL} - ${VOLADVISE}"

      echo "${FILER};${VFILER};${VOL};${VOLTOTAL};${VOLUSED};${SNAPUSED};;;;${TTLQTUSED};${TTLQTLIMIT};${VOLADVISE};=${DELTA}/1024/1024"|tee -a ${TMP}

    done  # Volume-loop

  done
done

cat ${TMP}|uuencode ${CSV}|mailx -s "Vol size advise ${FILTER} ${DATI}  [${PGM}]" ${MAILTO}


echo "`date` ${PGM} finished."|tee -a ${LOG}
rm ${TMP} ${TMP}.quotas ${TMP}.df-k ${TMP}.var
exit 0

