
#!/bin/ksh
# FIle	: chk_freepool.ksh
# By	: M. de Boer, 051017
# Subject	: Controleer freepool of er GEEN tapes van AM in zitten
# Mod(0.3)	: Changed msg
# Mod(0.4),MdB,060111	: Added echo at beginning
# Mod(0.5),MdB,060221	: grep -f Offsite added at NROFTAPES
# Mod(0.6),MdB,060825	: --ov, case statement, $LOG added 
# Mod(0.7),MdB,080404	: $TOTALTAPES added
# Mod(0.8),MdB,100907	: Text mod's; .ksh added; LOG -> $HOME/log/
# Mod(0.9),MdB,101101	: Fair tapes as well
# (0.10), MdB,101102	: POOLERR -> OVMSG ($NRERR -gt 10)

PGM="`basename $0|cut -d\. -f1`"
TMP="/tmp/$PGM.$$"
VERSION="0.10"
SMS=""
MAIL=""
MAILTO="gmnl-msscentral@atosorigin maarten.deboer@atosorigin.com"
MAILTO="fsod@atosorigin maarten.deboer@atosorigin.com"
SMSTO="+31630531444@sms.gin.nl"
ROBOTNAME="NLBSMSS01_SLB"
FREEPOOLNAME="Free LTO-Ultrium"
TAPEMIN=50
TAPECRIT=20
HOSTNAME="`hostname`"
SUBJECT=""
LOG="${HOME}/log/${PGM}.log"
OV=""
OVMSG=""
OVCRIT=0
POOLERR=5


USAGE()
{
  echo "Usage: $PGM [-h] [-v] [-V] [-x] [--help] [--mail] [--sms] [--ov]"
  echo "  Version: ${VERSION}"
  echo "  options:"
  echo "    -h : this help"
  echo "    -v : verbose"
  echo "    -V : Version"
  echo "    -x : set -x"
  echo "    --help          : this help"
  echo "    --mail          : do send mail"
  echo "    --sms           : do send sms"
  echo "    --ov            : do send to hp-OpenView"
}


# Check options
while [ $# -gt 0 ]
  do
  case $1 in
    --mail) MAIL=1 ;;
    --sms) SMS=1 ;;
    --ov) OV=1 ;;
    -h | --help) USAGE; exit 1 ;;
    -v) VERBOSE=1 ;;
    -V) echo "${PGM}: v${VERSION}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
done


echo "PGM=$PGM"
echo "VERSION=$VERSION"
echo "MAIL=$MAIL"
echo "MAILTO=$MAILTO"
echo "SMS=$SMS"
echo "SMSTO=$SMSTO"
echo "TAPEMIN=$TAPEMIN"
echo "VERBOSE=$VERBOSE"
echo "OV=$OV"
echo "OVMSG=$OVMSG"
echo "OVCRIT=$OVCRIT"


echo "" 

# Check if no tapes from other pool are in the free-pool
# Ommit == & header (grep -v)
/opt/omni/bin/omnimm -show_pool_alloc "$FREEPOOLNAME"|grep -v =|grep -v Nr.|grep -v Offsite|grep -v "$FREEPOOLNAME"|grep -v "$ROBOTNAME" >> $TMP
if [ -s $TMP ]; then
  # Count NR of lines (with tape names, [ ]) in output
  NRERR="`grep -c "\[" $TMP`"
  if [ $NRERR -gt 0 ]; then
    SUBJECT=":$HOSTNAME: $NRERR error(s) in Freepool."
    cat $TMP
    echo "$NRERR error(s) in Freepool."
    if [ $NRERR -gt ${POOLERR} ]; then
      OVMSG="$SUBJECT"
    fi
  fi
fi

#NROFTAPES="`/opt/omni/bin/omnirpt -report pool_list -tab | grep "$FREEPOOL"|awk -F "\t" '{print $6}'`"
#NROFTAPES="`/opt/omni/bin/omnimm -list_pool 'Free LTO-Ultrium'|grep Good|grep -vi offsite|grep -c None ` "
NROFTAPES="`/opt/omni/bin/omnimm -list_pool "$FREEPOOLNAME"|egrep -e 'Good|Fair'|grep -vi offsite|grep -c None ` "
TOTALTAPES="`/opt/omni/bin/omnimm -show_pools | grep "$FREEPOOLNAME" | awk '{ print $6}'`"
echo "$FREEPOOLNAME = $NROFTAPES / $TOTALTAPES (<$TAPEMIN) [# of Free tapes / # of Total tapes in $FREEPOOLNAME (# of minimum for alarming)" 
if [ $NROFTAPES -le $TAPEMIN ]; then
  SUBJECT=":$HOSTNAME: $SUBJECT $NROFTAPES / $TOTALTAPES (<$TAPEMIN) GOOD+FAIR tapes in $FREEPOOLNAME pool "
  echo $SUBJECT | tee -a $TMP
  OVMSG="$SUBJECT"
# If Number of tapes is lower then Critical
  if [ $NROFTAPES -lt $TAPECRIT ]; then
    OVCRIT=1
  fi
fi

if [ $MAIL ]; then
  if [ $VERBOSE ]; then
    echo "Mailing $SUBJECT"
    cat $TMP
  fi
fi
if [ $SMS ]; then
  MAIL=1
  MAILTO="$SMSTO"
#  SMS=":SMS: "
  if [ $VERBOSE ]; then
    echo "SMS-ing $SUBJECT"
  fi
  echo " "> $TMP
fi

if [ $VERBOSE ]; then
  echo "SUBJECT: $SUBJECT"
  cat $TMP
fi

# if TMP-file size greater than zero  & do send mail (MAIL<>"") then mail
if [ "$SUBJECT" != "" ] &&  [ -s $TMP ] && [ $MAIL ] ; then
  mailx -s "${SMS}$SUBJECT [${PGM} v${VERSION}]" $MAILTO < $TMP
  echo "`date`: Mail-ed ${SMS}$SUBJECT to $MAILTO ..." | tee -a $LOG
fi

# If --ov & a OV MSG then send to OpenView.
if [ $OV ]; then
  if [ "$OVMSG" != "" ]; then
# If a CRITICAL (OVCRIT=1) then do a page call too (omnibttp)
    if [ $OVCRIT -ge 1 ]; then
      /opt/OV/bin/OpC/opcmsg object=omnibttp application="Data Protector" msg_grp=DS_scripts msg_text="$OVMSG"
      echo "`date`: Send PageCall (& USD-request) with $OVMSG ..." | tee -a $LOG
    else
      /opt/OV/bin/OpC/opcmsg object=omnibtt application="Data Protector" msg_grp=DS_scripts msg_text="$OVMSG"
      echo "`date`: Made USD-request with $OVMSG ..." | tee -a $LOG
    fi
  fi
fi

rm $TMP
exit

