
#!/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"
FILENAME=""
DAYFILE=""
MONTHFILE=""
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"
DAYNAME=""
DATADIR=""

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options        : "
  echo "     -f        : Filter (${FILTER})"
  echo "     -h        : This help"
  echo "     -v        : Verbose"
  echo "     -V        : Version"
  echo "     --day     : Day-file processing (yy-mm-dd.CSV)"
  echo "     --dayname : Name of Dayfile (${DAYNAME}.CSV)"
  echo "     --datadir : other DATADIR (${DATADIR})"
  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 ;;
    '--day')  DAYFILE=1 ;;
    '--dayname')  DAYNAME="${2}"; shift  ;;
    '--datadir')  DATADIR="${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 "DATADIR=${DATADIR}"
echo "DAYFILE=${DAYFILE}"
echo "FILENAME=${FILENAME}"
echo "LOG=${LOG}"
echo "MONTHFILE=${MONTHFILE}"
echo "NC=${NC}"
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}"
echo "DAYNAME=${DAYNAME}"
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}
  REM_DIR=`${SSH} ${REM_USER}@${REM_HOST} "ls -1 ${REM_DATADIR}"|head -1`
# 20250911-213001
  echo "    REM_DIR=${REM_DIR}"
  YR=`echo ${REM_DIR}|cut -c1-4`
  MON=`echo ${REM_DIR}|cut -c5-6`
  DAY=`echo ${REM_DIR}|cut -c7-8`
  HR=`echo ${REM_DIR}|cut -c10-11`
  MIN=`echo ${REM_DIR}|cut -c12-13`
  SEC=`echo ${REM_DIR}|cut -c14-15`
  EPOCH=`date +%s -d"${YR}-${MON}-${DAY} ${HR}:${MIN}"`
  echo "      EPOCH=${EPOCH}"

# /home/mssbatch/data/recharging/fsod/history/20250911-213001/nlnaf100_v3-20250911.asc
  ${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}"
    CLUSTER=`basename ${REM_FILE} |cut -d\_ -f1`
    echo "        CLUSTER=${CLUSTER}"
# 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 "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 ${REM_FILE} >> ${UPLOADED}
    echo "      REM_FILE=${REM_FILE}"
  done  # REM_FILE

else
  echo "  Running localhost"|tee -a ${LOG}


fi  # REM_HOST

exit 99


if [ ${DAYFILE} ]; then
  if [ "${DAYNAME}" != "" ];then
    FILENAME=`ls -1 ${DATADIR}/${DAYNAME}.CSV`
    echo "  FILENAME=${FILENAME}"
sleep 1
  else
    echo "  Finding the next day ..."
    FILENAME=`find ${DATADIR} -name "2?-??-??.CSV"|egrep -vf ${UPLOADED}| head -1`
  fi
  echo "  FILENAME=${FILENAME}."|tee -a ${LOG}
  if [ "${FILENAME}" == "" ]; then
    echo "Empty FILENAME. Exiting ...  "|tee -a ${LOG}
    exit 1
  fi
  echo "  FILENAME=${FILENAME}"
  cat ${FILENAME}|grep '0\;'|grep -v '\---'|while read LINE
  do
#    echo "${LINE}|"
    YR="20`basename ${FILENAME}|cut -d\- -f1`"
    MON="`basename ${FILENAME}|cut -d\- -f2`"
    DAY="`basename ${FILENAME}|cut -d\- -f3|cut -d\. -f1`"
    HR="`echo ${LINE}|cut -d\; -f1|cut -d\: -f1`"
    MIN="`echo ${LINE}|cut -d\; -f1|cut -d\: -f2`"
    GEN="`echo ${LINE}|cut -d\; -f2|sed 's/,//g'|sed 's/\r//g'`"
    EPOCH=`date +%s -d"${YR}-${MON}-${DAY} ${HR}:${MIN}"`
    echo "  ${YR}${MON}${DAY} ${HR}:${MIN} (${EPOCH}) ${GEN}|"|tee -a ${LOG}

#    ${SSH} ${REM_HOST} "echo \"agrarix.solar.generated ${GEN} ${EPOCH}\"|nc ${GHOST} ${GPORT}"
#    echo "agrarix.solar.generated ${GEN} ${EPOCH} | nc ${GHOST} ${GPORT}"
    echo "agrarix.solar.generated ${GEN} ${EPOCH}"|nc ${GHOST} ${GPORT}
    EC="${?}"
#    echo "  EC=${EC}"
  done  # cat
  basename ${FILENAME}|tee -a ${UPLOADED}
fi  # DAYFILE

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

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

exit 0

