
#!/bin/sh
# File  : mail-filer-status.sh
# By    : Maarten.DeBoer@Atos.net, 180323
# Subject       : A script to get some status info & mail it to the status-site
PGM="`basename $0|cut -d\. -f1`"
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
FILERS="${HOME}/etc/filers"
SSH="/usr/bin/ssh -n"
#MAILTO="maarten.deboer@atos.net nl19471@nlxmss04.bcklan.ao-srv.com"
MAILTO=" nl19471@nlxmss04.bcklan.ao-srv.com"
HOSTNAME="`hostname | cut -d\. -f1`"
FILTER="[?]*"

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -e          : set Etc/filer_default-file (${FILERS})"
  echo "    -f          : filter Filername (${FILTER})"
  echo "    --mailto    : send MAILTO (${MAILTO})"
  echo "    -h | --help : this help"
  echo "    -V          : Version"
  echo "    -x          : set -x"
}
# Check options
while [ ${#} -gt 0 ]
  do
  case ${1} in
    -e) FILERS=${2}; shift ;;
    -f) FILTER=$2; shift ;;
    -h | --help) USAGE; exit 1 ;;
    --mailto) MAILTO=${2}; MAIL=1; shift ;;
    -m | --mail) MAIL=1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

if [ ! -f ${FILERS} ]; then
  echo "`date` ${PGM}: No etc-file ${ETC} found. Exiting ..."|tee -a ${LOG}
  exit 2
fi

echo "`date` ${PGM} v${VER} started (will mail to ${MAILTO})"|tee -a ${LOG}
touch ${TMP}

for FILER in `cat ${FILERS}|grep -v \^#|grep ${FILTER}`
do
  echo "${FILER} ..."
  ping -c 1 ${FILER}
  EC=${?}
  if [ ${EC} -eq 0 ]; then
    echo "PGM=${PGM} v${VER}" >> ${TMP}
    echo "HOSTNAME=`${SSH} ${FILER} hostname`" >> ${TMP}
    echo "DATISTRUTC=`date +%Y%m%d%H%M%S --utc`" >> ${TMP}
    echo "UPTIME=`${SSH} ${FILER} uptime`" >> ${TMP}
    echo "UNAME-R=`${SSH} ${FILER} version|cut -d\: -f1`" >> ${TMP}
    echo "USAGE=" >> ${TMP}
    echo "CF-STATUS=`${SSH} ${FILER} cf status|head -1`" >> ${TMP}

    cat ${TMP} | mailx -s "status:${FILER}" "${MAILTO}"
    echo "`date` mailed ${FILER} status to ${MAILTO}"|tee -a ${LOG}
    cp /dev/null ${TMP}
  fi  # EC=0

done  # FILER

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

