
#!/bin/bash
# File	: fsod_accounting_graphite_upload.sh
# By	: MaartenDeBoer.nl,2015-01-17,260213
# Subject	: Script to upload SunnyBream data to Graphite
#(0.3)	: Add; search for SBEAM
#(0.4)	: Added GHOST, GPORT, RECUR
#(0.5),190417	: find in styead of `ls -l1`
#(0.6),191225	: Update name & Check DATADIR before running (to check is SunnyBEAM is connected to this system)
#(0.7),241001	: Add RCFILE, test NC
#(0.8),260213	: For nlxfsd17, Add: DAYNAME
#(0.9),260321	: From upload_sbeam_data_to_graphite.sh
#set -x
PGM="`basename $0|cut -d\. -f1`"
VER="0.9"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RESULT=""
UPLOADED="${HOME}/data/${PGM}.uploaded"
YEARMON="`date +%Y-%m`"
GHOST="10.192.109.164"
# nlxfsd16
GHOST="10.192.109.224"
GPORT="2003"
RECUR=""
NC="/usr/bin/nc"
RCFILE="${HOME}/etc/${PGM}.rc"
SSH="/usr/bin/ssh -n"
REM_HOST="nlxmssp3"
REM_USER="mssbatch"
REM_DATADIR="/home/mssbatch/data/recharging/fsod/history"
DFILTER="[?]*"

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options        : "
  echo "     -f        : Filter (${FILTER})"
  echo "     -h        : This help"
  echo "     -v        : Verbose"
  echo "     -V        : Version"
  echo "     --dfilter : remote DirFILTER (${DFILTER})"
  echo "     --gport   : other Graphite HOST (${GHOST})"
  echo "     --ghost   : other Graphite PORT (${GPORT})"
  echo "     --recursive  : RECURSIVE (= ongoing)"
}
if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using it"|tee -a ${LOG}
  . ${RCFILE}
fi  # RCFILE
while [ ${#} -gt 0 ]
do
  case "${1}" in
    '-h')  USAGE; exit 1 ;;
    '-x')  set -x ;;
    '-V')  echo "Version=${VER}" ; exit 1 ;;
    '--dfilter')  DFILTER="${2}"; shift  ;;
    '--ghost')  GHOST="${2}"; shift  ;;
    '--gport')  GPORT="${2}"; shift  ;;
    '--recursive')  RECUR=1  ;;
    *) echo "Option ${1} not found." ; USAGE; exit 2 ;;
  esac 
  shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "PGM=${PGM}"
echo "VER=${VER}"
echo "LOG=${LOG}"
echo "NC=${NC}"
echo "DFILTER=${DFILTER}"
echo "GHOST=${GHOST}"
echo "GPORT=${GPORT}"
echo "PGM=${PGM}"
echo "SSH=${SSH}"
echo "REM_HOST=${REM_HOST}"
echo "REM_USER=${REM_USER}"
echo "REM_DATADIR=${REM_DATADIR}"
echo "RECUR=${RECUR}"
echo "UPLOADED=${UPLOADED}"
sleep 1

if [ ! -x ${NC} ]; then
  echo "  NO nc (${NC}) found. Exiting ..."|tee -a ${LOG}
  exit 5
fi  # NC

touch ${UPLOADED}

# If REM, then REMote
if [ "${REM_HOST}" != "" ]; then
  echo "  Running on REMote_HOST (${REM_HOST})"|tee -a ${LOG}

  ${SSH} ${REM_USER}@${REM_HOST} "ls -1 ${REM_DATADIR}"|grep "${DFILTER}"|while read REM_DIR
  do
    echo "    REM_DIR=${REM_DIR}"
    ${SSH} ${REM_USER}@${REM_HOST} "ls -1 ${REM_DATADIR}/${REM_DIR}/*.asc" |egrep -vf ${UPLOADED}|while read REM_FILE
    do
      echo "      REM_FILE=${REM_FILE}"
# nlnaf103_v3-20260322.asc
      REM_FILENAME=`basename ${REM_FILE}`
# 2  0260322
      REM_FILEDATENAME=`echo ${REM_FILENAME}|cut -d\- -f2|cut -d\. -f1`
      YR=`echo ${REM_FILEDATENAME}|cut -c1-4`
      MON=`echo ${REM_FILEDATENAME}|cut -c5-6`
      DAY=`echo ${REM_FILEDATENAME}|cut -c7-8`
      EPOCH=`date +%s -d"${YR}-${MON}-${DAY} 12:00"`

      CLUSTER=`basename ${REM_FILE} |cut -d\_ -f1`
      echo "        REM_FILENAME=${REM_FILENAME} CLUSTER=${CLUSTER} REM_FILEDATENAME=${REM_FILEDATENAME} EPOCH=${EPOCH}"

# nlnafsuod02;uod02_vol11008;n14a9001;5242880KB;
      ${SSH} ${REM_USER}@${REM_HOST} "cat ${REM_FILE}"|grep "nlnafs"|awk -F\; '{print $1";"$2";"$4";"}'|while read LINE
      do
        echo -n "."
#        echo "LINE=${LINE}"
        DATI=""
        VSERVER=`echo ${LINE}|awk -F\; '{print $1}'`
        VOLUME=`echo ${LINE}|awk -F\; '{print $2}'`
        TOTAL_SIZE_KB=`echo ${LINE}|awk -F\; '{print $3}'|sed 's/KB//g'`
#      echo "      CLUSTER=${CLUSTER} VSERVER=${VSERVER} VOLUME=${VOLUME} TOTAL_SIZE_KB=${TOTAL_SIZE_KB} EPOCH=${EPOCH}"

# /appl/data/graphite/storage/whisper/netapp/capacity/nl
        echo "netapp.accounting.nl.${CLUSTER}.svm.${VSERVER}.vol.${VOLUME}.actual_volume_size ${TOTAL_SIZE_KB} ${EPOCH}"|nc ${GHOST} ${GPORT}
        EC="${?}"

      done  # LINE
      echo "|"
      echo "      REM_FILENAME=${REM_FILENAME}"
      echo ${REM_FILENAME} >> ${UPLOADED}
    done  # REM_FILE
  done  # REM_DIR
else
  echo "  Running localhost"|tee -a ${LOG}
  echo "    NOT implemented, yet"|tee -a ${LOG}

fi  # REM_HOST

echo "`date` ${PGM} finished."|tee -a ${LOG}

if [ ${RECUR} ]; then
  $0 --recursive
fi

exit 0

