
#!/bin/ksh
# File	: rpt_cifs-ops-latency-sessions.ksh
# By	: Maarten.deBoer@Atos.net, 140324
# Subject	: Report CIFS OPS & Latency & Sessions, SHares, Files collected in CSV /day
#
PGM="`basename $0|cut -d\. -f1`"
VER="0.1"
TMP="/tmp/${PGM}.$$"
SSH="/usr/bin/ssh -n"
FILERS="${HOME}/etc/filers"
HOSTNAME="`hostname|cut -d\. -f1`"
MAILTO="maarten.deboer@atos.net"
DATI="`/bin/date +%Y'-'%m'-'%d' '%H':'%M`"
FILTER="[?]*"
LOG="${HOME}/log/${PGM}.log"
CSV="${HOME}/data/out/${PGM}_`/bin/date +%Y'-'%m'-'%d`.csv"
DELETECSV=""
MAIL=""

# Functions
USAGE()
{
  echo "Usage: ${PGM} <option(s)>"
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -d          : Delete CSV"
  echo "    -e          : specify Etc-file (${FILERS})"
  echo "    -f          : filter filername (${FILTER})"
  echo "    -h | --help : this help"
  echo "    -m | --mail : do send mail"
  echo "    -V          : 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 [ ${#} -ge 1 ]
  do
  case $1 in
    -d) DELETECSV=1;;
    -e) FILERS=${2}; shift ;;
    -f) FILTER=${2}; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -m | --mail) MAIL=1 ;;
    --mailto) MAILTO=${2}; MAIL=1; 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}

if [ ${DELETECSV} ]; then
  cp /dev/null ${CSV}
fi  # DELETECSV

echo "# Date Time;FILER;CIFS-OPS;CIFS-Latency;Vfiler;SMB-sessions;SMB2-sessions;Shares;Files;"|tee -a ${CSV} 
for FILER in `cat ${FILERS}|grep ${FILTER}`
do
  DATI="`/bin/date +%Y'-'%m'-'%d' '%H':'%M`"
  echo -n "${DATI};${FILER};"|tee -a ${CSV}
  ${SSH} ${FILER} stats show -i 1 -n 1 cifs:cifs:cifs_ops cifs:cifs:cifs_latency|tail -1|awk '{print $2";"$3";"}'|tee -a ${CSV}
  ${SSH} ${FILER} vfiler status | grep -v vfiler|grep running|awk '{print $1}'| while read VFILER
  do
    DATI="`/bin/date +%Y'-'%m'-'%d' '%H':'%M`"
    SMBSES="`${SSH} ${FILER} vfiler run -q ${VFILER} cifs sessions -p smb|grep ' - '|wc -l`"
    SMB2SES="`${SSH} ${FILER} vfiler run -q ${VFILER} cifs sessions -p smb2|grep ' - '|wc -l`"
    
#  #shares   #files
    ${SSH} ${FILER} vfiler run -q ${VFILER} cifs sessions|egrep ' - ' -A 1|grep -v ' - '|grep "[0-9]"|awk '{print $1" "$2}'> ${TMP}

    TOTSHARES=0
    TOTFILES=0
    cat ${TMP} |while read SHARES FILES
    do
      let "TOTSHARES=${TOTSHARES} + ${SHARES}"
      let "TOTFILES=${TOTFILES} + ${FILES}"
    done  # cat

    echo  "${DATI};${FILER};;;${VFILER};${SMBSES};${SMB2SES};${TOTSHARES};${TOTFILES};"|tee -a ${CSV}

  done  # VFILER

done  # for FILERS

if [ ${MAIL} ]; then
ls -l ${CSV}
  date|mailx -a ${CSV} -s "@${HOSTNAME}: Status report [${PGM} v${VER}]" ${MAILTO}
  echo "`date` Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAIL

rm ${TMP} 
echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
exit 0

