
#!/bin/ksh
# File  : cdot_chk_disks.sh
# By    : Maarten.deBoer@atos.net, 2014-12-09, 210503
# Subject       : Script to check for broken disks for cDOT-systems/clusters
#(0.2)	: Add ping for checking connectivity
#(0.3),210503	: Mod for cDOT, Removed IMI & SDM-tickets
#
PGM="`basename $0|cut -d\. -f1`"
TMP="/tmp/${PGM}.$$"
HOSTNAME="`hostname|cut -d\. -f1`"
VER="0.3"
LOG="${HOME}/log/${PGM}.log"

CLUSTERS="${HOME}/etc/clusters"
CFILTER="[?]*"
SSH="/usr/bin/ssh -n -c 3des-cbc"
MAIL=""
MAILTO="maarten.deboer@atos.net"

NAGIOSSEV="WARNING"
NAGIOS=""

SEND_TO_NAGIOS()
# SEND_TO_NAGIOS ${NAGIOSSEV} ${MSGSTR}
# $1=NAGIOSSEV $2=MSGSTR
{
# Nagios will be needed for every item (volume). Because limitation of 255 char's
# For more; IMI need to be used.
  if [ "${NAGIOS}" ]; then
  #----------------------------------------------------------------#
  # To Nagios (via logger)                                                         #
  # ------                                                         #
  # MINOR         Nagios-WARNING & SEV.3                           #
  # WARNING       Nagios-WARNING & SEV.3                           #
  # CRITICAL      Nagios-CRITICAL & SEV.2                          #
  # FATAL         Nagios-CRITICAL & SEV.2                          #
  # logger -t NOTIFY FSOD-SUPPORT <Nagios-SEV> "Text"              #
  #----------------------------------------------------------------#
  /usr/bin/logger -t NOTIFY FSOD-SUPPORT ${1} "${MSGSTR}"
# echo "logger: NOTIFY FSOD-SUPPORT ${1} ${2}"|tee -a ${LOG}
  echo "logger: NOTIFY TEST-SUPPORT ${1} ${2}"|tee -a ${LOG}
  fi  # [ "${NAGIOS}" ]; then
}

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -c          : filter Clustername (${CFILTER})"
  echo "    -h|--help   : this help"
  echo "    -m|--mail   : Mail the output to (${MAILTO})"
  echo "    --mailto    : Mailto (${MAILTO})"
  echo "    -n|--nagios : send (short)alert via logger+Nagios"
  echo "    -V          : Version"
  echo "    -x          : set -x"
}

# Check options
while [ $# -gt 0 ]
  do
  case $1 in
    -c) CFILTER=$2; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    --mailto) MAILTO=${2}; MAIL=1; shift ;;
    -m | --mail) MAIL=1;;
    -n | --nagios) NAGIOS=1;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
done

#--------------------------------------------------------------------------#
echo "`date` ${PGM}: v${VER} @${HOSTNAME} Started with FILER=${FILTER} & VOLUME=${VOLFILTER}"| tee -a ${LOG}
echo "CFILTER=${CFILTER}"
echo "MAILTO=${MAILTO}"
echo "NAGIOS=${NAGIOS}"
echo "TMP=${TMP}"
echo "PGM=${PGM}"
echo "VER=${VER}"

touch ${TMP} 
for CLUSTER in `cat ${CLUSTERS}|grep -v \^#|awk -F\; '{print $1}'|grep "${CFILTER}"`
do
  # clean some file 1st
  echo "Cluster: ${CLUSTER} ..."
  ping -c 1 ${CLUSTER}
  EC=${?}
  if [ ${EC} -eq 0 ]; then
    ${SSH} ${CLUSTER} "storage disk show -error-type diskfail" | tee -a ${TMP}
  fi  # ping
done  # for CLUSTER 

if [ "${MAIL}" ]; then
  echo "" >> ${TMP}
  echo "# `date` at ${HOSTNAME} by ${PGM} v${VER}" >> ${TMP}
  cat ${TMP} |mailx -s ":${HOSTNAME}: Check (cDOT) disks [${PGM} v${VER}]" "${MAILTO}"
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAIL

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

