
#!/bin/sh
# FIle	: 
# By	: Maarten.deBoer@Atos.net, 180912
# Subject	: Script to backup cDOT-config data via FTP
#(0.2)	: Checks (local) for DEST_DIR/NODE dir
#(0.3)	: Update ERROR with mailto
PGM=`basename $0|cut -d\. -f1`
VER="0.3"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
MAILTO="maarten.deboer@atos.net"

# 10.192.109.44 aoxnlfsd02
FTP_HOST="10.192.109.44"
DEST_DIR="temp/"
USERNAME_PWD="aodfm01a:Fs0dAaaa"
FTPTEMPDIR="temp"

CLUSTERS="${HOME}/etc/clusters"
FILTER="[?]*"
FILTER="nlnaf106"

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}

if [ ! -f ${CLUSTERS} ]; then
  echo "  No CLUSTERS (${CLUSTERS}) found. Exiting ..."
  exit 2
fi
# When NO FTPTEMPDIR, create it
if [ ! -d ${HOME}/${FTPTEMPDIR} ]; then
  mkdir -p ${HOME}/${FTPTEMPDIR}
  echo "  Created ${HOME}/${FTPTEMPDIR} "|tee -a ${LOG}
fi

touch ${TMP}
for CLUSTER in `cat ${CLUSTERS}|grep ${FILTER}|grep -v \^#|awk -F\; '{print $1}'|sort`
do
  echo "${CLUSTER} ..."
  ${SSH} ${CLUSTER} "vserver show -type node"|grep ${CLUSTER}|awk '{print $1}'|while read NODE REST
  do
#    echo "${NODE} ..."
# If ${DEST_DIR} exists, then check if NODE-dir exists. Otherwise create
    if [ -d ${HOME}/${DEST_DIR} ]; then
#      echo "  ${HOME}/${DEST_DIR} exists"
      if [ ! -d ${HOME}/${DEST_DIR}/${NODE} ]; then
        echo "  ${HOME}/${DEST_DIR}/${NODE} does NOT exist. Creating it"|tee -a ${LOG}
        mkdir -p ${HOME}/${DEST_DIR}/${NODE}
      fi
    fi

# Get the last backup made of the node
    LATESTTIME=`${SSH} ${CLUSTER} "set -priv advanced;system configuration backup show -node ${NODE} -field time" | awk '{print $3,$4}'|sort -n|tail -1`
# Select the filename of the last backup made
    LATESTFILE=`${SSH} ${CLUSTER} "set -priv advanced;system configuration backup show -node ${NODE} -time ${LATESTTIME}" | awk '{print $2}'|sort -n|tail -1`

    echo "`date` FTP from ${CLUSTER}/${NODE} ${LATESTTIME} ${LATESTFILE}"|tee -a ${LOG}
# FTP backup to FTP-host. And capture the output in TMP
    ${SSH} ${CLUSTER} "set -priv advanced;system configuration backup upload -node ${NODE} -backup ${LATESTFILE} -destination ftp://${USERNAME_PWD}@${FTP_HOST}/${FTPTEMPDIR}/${DEST_DIR}/${NODE}/" 1> ${TMP} 2>&1
    EC="${?}"
# If an error occured, put this (TMP) in LOG-file
    if [ ${EC} -gt 0 ]; then
      echo "  ERROR (${EC})"|tee -a ${LOG} | tee -a ${TMP}.mail
      cat ${TMP}|tee -a ${LOG}|tee -a ${TMP}.mail
    else
# When OK, data can be copied to the right DIR
      cp ${TEMPDIR}

    fi  # EC

  done  # NODEs
done  # CLUSTERs

if [ -s ${TMP}.mail ]; then
  echo "  ${PGM} v${VER} has ERROR(s). See attachment"| mailx -s ":${HOSTNAME}: ${PGM} ERROR(s)" -a ${TMP}.mail ${MAILTO}
  echo "  Mailed ERROR(s) to ${MAILTO}"|tee -a ${LOG}
  rm ${TMP}.mail
fi

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

