
#!/bin/sh
# File	: rpt_msg-str.sh
# By	: Maarten.deBoer@Atos.net, 140114
# Subject	: Report (count) a string in messages-log of filers
#(0.2)	: Added more messages-files, MSGLOGFILES=5, MAILLOG
#(0.3)	: Mod. date +%d -> +%e, Add DAYFILENR
PGM="`basename $0|cut -d\. -f1`" 
VER="0.3"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
FILERS="${HOME}/etc/filers"
SSH="/usr/bin/ssh -n"
HOSTNAME="`hostname|cut -d\. -f1`"
MAILTO="maarten.deboer@atos.net"
DATI="`date +%Y-%m-%d_%H-%M`"
CSV="/tmp/FSOD-vscan-report_${DATI}.csv"
FILTER="[1234567890]*"
CUSTCODE="[1234567890]*"
MAIL=""
MONSTR="`date +%b`" 
DAYNR="`date +%e`" 
MAILLOG=""
MSGSTR="oplock"
MSGSTR="[0x14]"
HRS="00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23"
MSGLOGFILES=0
GETMSGLOG=""

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VERSION}"
  echo "  options:"
  echo "    -a          : Amount of message-logfiles (${MSGLOGFILES})"
  echo "    -c          : Custromer code (${CUSTCODE})"
  echo "    -d          : Daynr (${DAYNR})"
  echo "    -e          : Etc/filers (${FILERS})"
  echo "    -f          : Filter filername (${FILTER})"
  echo "    -h | --help : this help"
  echo "    -l          : send messagesLog per vfiler"
  echo "    -m | --mail : do send mail"
  echo "    -V          : Version"
  echo "    -x          : set -x"
  echo "    --maillog   : MAIL message LOG of vfiler"
  echo "    --mailto    : change MAILTO address & do send mail (${MAILTO})"
  echo "    --msgstr    : select MeSsaGes STRing (${MSGSTR}) for (e)grep in message-log-file"
}
# Check options
while [ $# -gt 0 ]
  do
  case $1 in
    -a) MSGLOGFILES=$2; shift ;;
    -c) CUSTCODE=${2}; shift ;;
    -d) DAYNR=${2}; shift ;;
    -e) FILERS=${2}; shift ;;
    -f) FILTER=${2}; shift ;;
    -l) MAILLOG=1;MAIL=1; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -m | --mail) MAIL=1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    --mailto) MAILTO=$2; MAIL=1; shift ;;
    --msgstr) MSGSTR=$2; shift ;;
    --maillog) MAIL=1; MAILLOG=1;;
    -x)  set -x ;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
done

DAYFILENR="`echo ${DAYNR}|sed 's/\ //g'`"

CSV="/tmp/FSOD-msgstr-report_day${DAYFILENR}.csv"

echo "${PGM} v${VER}"
echo "CSV = ${CSV}"
echo "CUSTCODE = ${CUSTCODE}"
echo "DAYNR = ${DAYNR}"
echo "FILERS = ${FILERS}"
echo "FILTER = ${FILTER}"
echo "HOSTNAME = ${HOSTNAME}"
echo "MAILTO = ${MAILTO}"
echo "MAILLOG = ${MAILLOG}"
echo "MSGSTR = ${MSGSTR}"

touch ${TMP} ${LOG} ${CSV} ${TMP}.asc ${TMP}.mail
echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
for FILER in `cat ${FILERS}|grep -v \^#|grep ${FILTER}`
do
  echo "# Daynr=${DAYNR} Hr->;00:;01:;02:;03:;04:;05:;06:;07:;08:;09:;10:;11:;12:;13:;14:;15:;16:;17:;18:;19:;20:;21:;22:;23:;Remarks;"|tee -a ${TMP}
  echo "Getting ${MSGLOGFILES} messages files ..."
  cp /dev/null ${TMP}.msg
  NR=${MSGLOGFILES}
  NR=`expr $NR + 1`
  while [ ${NR} -gt 0 ]
  do
    NR=`expr $NR - 1`
    ${SSH} ${FILER} rdfile /etc/messages.${NR} >> ${TMP}.msg
  done
  ${SSH} ${FILER} rdfile /etc/messages >> ${TMP}.msg

  ${SSH} ${FILER} vfiler status|grep running|grep -v vfiler0|awk '{print $1}'|grep ${CUSTCODE}|while read VFILER
  do
    echo -n "${FILER}/${VFILER};"|tee -a ${TMP}
    for HR in ${HRS} 
    do
      MSGSTRCNT="`grep \" ${DAYNR} ${HR}:\" ${TMP}.msg|grep ${VFILER}|egrep \"${MSGSTR}\"|wc -l`"
      echo -n "${MSGSTRCNT};"|tee -a ${TMP}
      if [ ${MSGSTRCNT} -gt 0 ]; then
        GETMSGLOG=1
      fi  # ${MSGSTRCNT}
    done  # for HR

    if [ ${MAILLOG} ] && [ ${GETMSGLOG} ]; then
      grep " ${DAYNR} " ${TMP}.msg|grep ${VFILER}|egrep ${MSGSTR} > ${TMP}.asc
      echo "Msg-str-log at DAYNR=${DAYNR} of ${FILER}/${VFILER} with MSGSTR=${MSGSTR}"|mailx -a ${TMP}.asc -s "@${HOSTNAME}: Msg-str-log of vfiler ${VFILER} [${PGM} v${VER}]" ${MAILTO}
      echo -n "Msg-str-log mail send; "|tee -a ${TMP}
      GETMSGLOG=""
    fi  # MAILLOG && ${GETMSGLOG} 

    echo ""|tee -a ${TMP}

  done  # VFILER

done  # for FILER

if [ -s ${TMP} ] && [ ${MAIL} ]; then
  echo "# ${PGM} v${VER}" >> ${TMP}.mail
  echo "# `date` @${HOSTNAME}" >> ${TMP}.mail
  echo "# CSV = ${CSV}" >> ${TMP}.mail
  echo "# CUSTCODE = ${CUSTCODE}" >> ${TMP}.mail
  echo "# DAYNR = ${DAYNR}" >> ${TMP}.mail
  echo "# FILERS = ${FILERS}" >> ${TMP}.mail
  echo "# FILTER = ${FILTER}" >> ${TMP}.mail
  echo "# MAILTO = ${MAILTO}" >> ${TMP}.mail
  echo "# MSGSTR = ${MSGSTR}" >> ${TMP}.mail
  cp ${TMP} ${CSV}
  echo "" >> ${CSV}
  cat ${TMP}.mail >> ${CSV}
  cat ${TMP}.mail|mailx -a ${CSV} -s "@${HOSTNAME}: Message-file string reporting [${PGM} v${VER}]" ${MAILTO}
  echo "`date` ${PGM} v${VER} mailed to ${MAILTO}."|tee -a ${LOG}
fi  # -s ${TMP}

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

