
#!/bin/ksh
set +x
#--------------------------------------------------------------------------#
#                                                                          #
# Name: make_qtree_report.sh                                               #
#                                                                          #
# Description: Script collects data about qtree information, volume size   #
#              and filesystem size of all FSOD filers per customer         #
#              and sends information by mail.                              #
#                                                                          #
# Version: 1.4                                                             #
#                                                                          #
# References:                                                              #
#                                                                          #
# Documentation:                                                           #
#                                                                          #
# Parameters: <customer code> [<email address>]                            #
#                                                                          #
# Usage: make_qtree_report.sh <customer code> [<email address>]            #
#                                                                          #
# Global Description:                                                      #
#                                                                          #
# Author(s): Atos Origin                                                   #
#                                                                          #
# Change log:                                                              #
# aut   date          vers   comments                                      #
# RL    09-06-2008    1.0    Initial version Richard Loos                  #
# RL    06-11-2008    1.1    Update qtree information                      #
# RL    14-01-2009    1.2    Update CIFS share information                 #
# RtB   05-03-2009    1.3    Copy from make_report.sh / New report layout  #
# MdB   15-03-2009    1.4    Check for ${2}. If <empty> then to GMNL, otherwise to ${2} #
#                     & Special 4 SLB migration                            #
#                                                                          #
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
# Read parameter                                                           #
#--------------------------------------------------------------------------#
CUSTOMERCODE=${1}
Usage="usage: make_qtree_report.sh <customer code> [<email address>]"
if [ -z "${CUSTOMERCODE}" ]
then
  echo  ${Usage}
  exit 1
fi

#--------------------------------------------------------------------------#
# Initialize variabels                                                     #
#--------------------------------------------------------------------------#
DATUM=`date '+%m-%d-%Y'`
CUSTOMER=`echo "${CUSTOMERCODE}"|tr [:lower:] [:upper:]`
DATADIR=${HOME}/data/out
FILE=${DATADIR}/$DATUM-${CUSTOMER}-NAS-Reporting.csv
OFILE=$DATUM-${CUSTOMER}-NAS-Reporting.csv

#--------------------------------------------------------------------------#
# Collect data of vfilers, volumes, qtrees, quotas and exportfs            #
#--------------------------------------------------------------------------#
echo "vFiler;Volume;Size / Qtree;Free / Qtree Style;Used*100% / Qtree Used;Qtree Quota;Qtree Used*100%;CIFS Share;Clients RW;Clients Root;" > ${FILE}

for FILER in $(cat ${HOME}/etc/filers4slb)
do
  for VFILER in `ssh ${FILER} vfiler status | grep ${CUSTOMERCODE} | awk '{ print $1 }'`
  do
    echo ${VFILER}
    ssh ${FILER} vfiler run ${VFILER} vol status > ${DATADIR}/vol${VFILER}
    ssh ${FILER} vfiler run ${VFILER} qtree status  | grep -v "        mixed  enabled" | grep -v "        ntfs  enabled" | grep -v "        unix  enabled" > ${DATADIR}/qtree${VFILER}
    ssh ${FILER} vfiler run ${VFILER} quota report > ${DATADIR}/quota${VFILER}
    ssh ${FILER} vfiler run ${VFILER} exportfs > ${DATADIR}/export${VFILER}
    ssh ${FILER} vfiler run ${VFILER} cifs shares > ${DATADIR}/cifs${VFILER}

    for VOLUME in $(cat ${DATADIR}/vol${VFILER} | grep online | awk '{ print $1 }' | grep "${CUSTOMERCODE}" | grep -v ^vol0 | sort )
    do
      ssh ${FILER} df /vol/${VOLUME} | tail +2 | grep -v snap | awk '{ print ";"$1";"$2";"$4";"$5 }'
      VOLUMEUSED=`ssh ${FILER} df /vol/${VOLUME} | tail +2 |grep -v snap | awk '{ print $5 }'`
      for QTREE in $(cat ${DATADIR}/qtree${VFILER} | grep "${VOLUME} " | awk '{ print $1 " " $2 " " $3 }' | awk '{ print $2";"$3 }')
      do
        QTREE2=`echo ${QTREE} | awk -F";" '{ print $1 }'`
        QUOTAUSE=`grep "${VOLUME} .*${QTREE2} " ${DATADIR}/quota${VFILER} | awk '{ print $5 }'`
        QUOTASET=`grep "${VOLUME} .*${QTREE2} " ${DATADIR}/quota${VFILER} | awk '{ print $6 }'`
        if [ -n "${QUOTAUSE}" -a -n "${QUOTASET}" -a "${QUOTASET}" != "-" ]
        then
          QTREEUSED=0
          let QTREEUSED=${QTREEUSED}+${QUOTAUSE}*100/${QUOTASET}
          QTREEUSED=${QTREEUSED}"%"
        else
          QTREEUSED="${VOLUMEUSED}"
        fi
        CLIENT=`cat ${DATADIR}/export${VFILER} | grep ${VOLUME}/${QTREE2} |
        awk -F"," '{
                    for ( i=1 ; i <= NF ; i++ ) {
                                                 if ( $i ~ /rw=/ ) { RW=substr($i,4) }
                                                 if ( $i ~ /root=/ ) { ROOT=substr($i,6) }
                                                }
                   } END {
                          printf("%s;%s\n", RW, ROOT)
                   }'`
        SHARE=`cat ${DATADIR}/cifs${VFILER} | grep ${VOLUME}/${QTREE2} | awk '{ print $1 }'`
        echo ${VFILER}";"/vol/${VOLUME}/";"${QTREE}";"${QUOTAUSE}";"${QUOTASET}";"${QTREEUSED}";"${SHARE}";"${CLIENT}
      done
      ssh ${FILER} df /vol/${VOLUME} | tail +2 | grep snap | sed 's/snap reserve/snap_reserve/g' | awk '{ print ";"$1";"$2";"$4";"$5 }'
    done

    rm ${DATADIR}/vol${VFILER}
    rm ${DATADIR}/qtree${VFILER}
    rm ${DATADIR}/quota${VFILER}
    rm ${DATADIR}/export${VFILER}
    rm ${DATADIR}/cifs${VFILER}
  done

done >> ${FILE}

#--------------------------------------------------------------------------#
# Summarize all numbers. Output will be visible in excel document.         #
#--------------------------------------------------------------------------#
LASTLINE=`cat ${FILE}| wc -l | tr -d ' '`
echo "\n">> ${FILE}
echo "Usage;Volume Total / Free (Gb);=SUM(C2:C${LASTLINE})/1048576;=SUM(D2:D${LASTLINE})/1048576;">> ${FILE}
let LASTLINE=${LASTLINE}+3
echo ";Volume Used (Gb);=SUM(C${LASTLINE}-D${LASTLINE});">> ${FILE}

#--------------------------------------------------------------------------#
# Send output as attachment in email.                                      #
# If 2nd param (${2}) = <empty>, then send to GMNL                         #
#--------------------------------------------------------------------------#
MAILTO="gmnl-msscentral@atosorigin.com"
if [ -n "${2}" ]; then
  MAILTO=${2}
fi
cat ${FILE} | uuencode ${OFILE} | mailx -s "$DATUM-${CUSTOMER}-NAS-Reporting" ${MAILTO}

rm ${FILE}

