
#!/bin/sh
# File	: cifs_sessions_show.sh
# By	: Maarten.deBoer@Atos.net, 250922
# Subject	: Scripts for check CIFS sessions
#(0.2),250922	: Add MAILTO as ${1}, VSERVER in mailsubject
#(0.3),250922	: Added windows-user
#(0.4),250926	: Added collect in file. Mail later
#(0.5),251001	: Mod for VGZ
#(0.6),251014	: Add USAGE
PGM=`basename $0| cut -d\. -f1`
VER="0.6"
LOG="${HOME}/log/${PGM}.log"
SSH="/bin/ssh -n"
TMP="/tmp/${PGM}.$$"
CSV="/tmp/${PGM}.csv"
MAILTO="maarten.deboer@atos.net"
#MAILTO="" 
HOSTNAME=`hostname |cut -d\. -f1`
MAILHDR="${TMP}.hdr"

CLUSTERS="${HOME}/etc/clusters"
CFILTER="nlnaf10[23]"
#CLUSTER="nlnaf102"
#VSERVER="nlnafstml01"
CMZ="mss"
CSV="/tmp/${PGM}_${CMZ}.csv"
RCFILE=${HOME}/etc/${PGM}.rc
VSERVER="nlnafs${CMZ}*"
EXCLUDE=""
EMPTY=""

# Exclude:
# \\tm.nl.ad.tmo\services\Portals Waiting for test results
# \\tm.nl.ad.tmo\Retail\managers Waiting for a firewall change and then testing
# \\tm.nl.ad.tmo\Retail\OffHome Waiting for a firewall change and then testing
# \\tm.nl.ad.tmo\Retail\shops Waiting for a firewall change and then testing
# \\tm.nl.ad.tmo\Retail\TsProfiles Waiting for a firewall change and then testing
# \\tm.nl.ad.tmo\Projects\NMA 1 person has issues with her laptop, needs to be fixed
#EXCLUDE="Portals|managers|OffHome|shops|TsProfiles"

USAGE()
{
  echo "Usage: ${PGM} <options>"
  echo "  Version: ${VER}"
  echo "  options         :"
  echo "    -c|--cmz      : CMZ(${CMZ}) (Customer Management Zone)"
  echo "    -e|--exclude  : EXCLUDE(${EXCLUDE})"
  echo "    -r|--rcfile   : RCFILE(${RCFILE})"
  echo "    -h|--help     : this Help"
  echo "    -m|--mail     : do send Mail"
  echo "    --empty       : Empty CSV-file 1st"
  echo "    -V            : show Version"
  echo "    -x            : set -x"
  echo "    --mailto      : change MAILTO address & do send mail (${MAILTO})"
}
# If RCFILE
if [ -f ${RCFILE} ]; then
  echo "  Reading RC-file (${RCFILE})..."|tee -a ${LOG}
  . ${RCFILE}
fi
while [ $# -gt 0 ]
  do
  case $1 in
    -c | --cmz) CMZ=${2}; shift ;;
    -m | --mail) MAIL=1 ;;
    --empty) EMPTY=1 ;;
    --mailto) MAILTO=${2}; MAIL=1; shift ;;
    -r | --rcfile) RCFILE=${2}; shift ;;
    -e | --exclude) EXCLUDE=${2}; 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

CSV="/tmp/${PGM}_${CMZ}.csv"
VSERVER="nlnafs${CMZ}*"

cp /dev/null ${MAILHDR}

echo "`date` ${PGM} v${VER} started. With NETW=${NETW}"|tee -a ${LOG}
echo "  CLUSTERS=${CLUSTERS}"
echo "  CFILTER=${CFILTER}"
echo "  CMZ=${CMZ}"|tee -a ${MAILHDR}
echo "  CSV=${CSV}"|tee -a ${MAILHDR}
echo "  EMPTY=${EMPTY}|"
echo "  EXCLUDE=${EXCLUDE}|"|tee -a ${MAILHDR}
echo "  LOG=${LOG}"
echo "  MAILTO=${MAILTO}"|tee -a ${MAILHDR}
echo "  MAILHDR=${MAILHDR}"
echo "  RCFILE=${RCFILE}"
echo "  VSERVER=${VSERVER}"
sleep 1

if [ ! -f ${CSV} ] || [ ${EMPTY} ]; then
  cp /dev/null ${CSV}
  EC=${?}
  echo "    Create / Empty (${EC}) CSV (${CSV})"|tee -a ${LOG}
fi  # CSV

echo "`date +%Y'-'%m'-'%d' '%H':'%M`;" |tee -a ${CSV}

cat ${CLUSTERS}|grep -v ^#|grep "${CFILTER}"|while read CLUSTER
do
  echo "  CLUSTER=${CLUSTER}"
  if [ "${EXCLUDE}" = "" ]; then
    ${SSH} ${CLUSTER} "set -showseparator \";\" ; vserver cifs session show -vserver ${VSERVER} -field address,connected-time,shares,files,share-names,windows-user" |tee -a ${CSV}
  else
    ${SSH} ${CLUSTER} "set -showseparator \";\" ; vserver cifs session show -vserver ${VSERVER} -field address,connected-time,shares,files,share-names,windows-user"|egrep -vi "${EXCLUDE}" |tee -a ${CSV}
  fi  # EXCLUDE=""
done  # CLUSTER

if [ "${MAILTO}" != "" ]; then
  echo "By ${PGM} v${VER} at ${HOSTNAME}"|tee -a ${MAILHDR}
  cat ${MAILHDR}| mailx -a ${CSV} -s "${VSERVER}: CIFS sessions show (${CMZ}) [${PGM} v${VER}]" "${MAILTO}"
  EC=${?}
  echo "  Mailed(${EC}) to ${MAILTO}"|tee -a ${LOG}
# when mailed, empty CSV
  cp /dev/null ${CSV}
  EC=${?}
  echo "    Emptied(${EC}) ${CSV}"|tee -a ${LOG}
fi  # MAILTO

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

