
#!/bin/sh
# File	: cdot_get_volume-info.sh
# By	: Maarten.deBoer@Atos.net, 220831
# Subject	: Script to get (some) volume info
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
CLUSTERS="${HOME}/etc/clusters"
#CFILTER="[?]*"
CFILTER="nlnaf10[01]"
#VFILTER="vol"
VFILTER="2022"
#VFILTER="mss"
SSH="/usr/bin/ssh -n"
CSV="/tmp/${PGM}.csv"
MAILTO="maarten.deboer@atos.net"
#MAILTO=""


# File	: sshcmd.func
# VER="0.1", <node>-04
# VER="0.2", <node>-06
# VER="0.3", <node>-10
SSHCMD()
# 1: Filername 2:Command-string
# When issue with connection to cluster, try the nodes (-01 & -02)
# "There are no entries matching your query." => EC=255
# "no connection" is also EC=255
{
  TMPERR="/tmp/${PGM}.$$.tmperr"
  touch ${TMPERR}
  /usr/bin/ssh -n ${1} "${2}" 2> ${TMPERR}
  EC=${?}
  # Check if "ssh: connect to host 10.192.109.202 port 22: Connection refused" If so (EC2=0), the 2nd
  grep 'Connection refused' ${TMPERR}
  EC2=${?}
  if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
    sleep 1
    /usr/bin/ssh -n ${1}-05 "${2}" 2> ${TMPERR}
    EC=${?}
    grep 'Connection refused' ${TMPERR}
    EC2=${?}
    if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
      sleep 1
      /usr/bin/ssh -n ${1}-06 "${2}" 2> ${TMPERR}
      EC=${?}
      grep 'Connection refused' ${TMPERR}
      EC2=${?}
      if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
        sleep 1
        /usr/bin/ssh -n ${1}-07 "${2}" 2> ${TMPERR}
        EC=${?}
        grep 'Connection refused' ${TMPERR}
        EC2=${?}
        if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
          sleep 1
          /usr/bin/ssh -n ${1}-08 "${2}" 2> ${TMPERR}
          EC=${?}
          grep 'Connection refused' ${TMPERR}
          EC2=${?}
          if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
            sleep 1
            /usr/bin/ssh -n ${1}-09 "${2}" 2> ${TMPERR}
            EC=${?}
            grep 'Connection refused' ${TMPERR}
            EC2=${?}
            if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
              sleep 1
              /usr/bin/ssh -n ${1}-10 "${2}" 2> ${TMPERR}
              EC=${?}
              grep 'Connection refused' ${TMPERR}
              EC2=${?}
              if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
                sleep 1
                /usr/bin/ssh -n ${1}-11 "${2}" 2> ${TMPERR}
                EC=${?}
                grep 'Connection refused' ${TMPERR}
                EC2=${?}
                if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
                  sleep 1
                  /usr/bin/ssh -n ${1}-12 "${2}" 2> ${TMPERR}
                  EC=${?}
                  grep 'Connection refused' ${TMPERR}
                  EC2=${?}
                  if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
                    sleep 1
                    /usr/bin/ssh -n ${1}-13 "${2}" 2> ${TMPERR}
                    EC=${?}
                    grep 'Connection refused' ${TMPERR}
                    EC2=${?}
                    if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
                      sleep 1
                      /usr/bin/ssh -n ${1}-14 "${2}" 2> ${TMPERR}
                      EC=${?}
                      grep 'Connection refused' ${TMPERR}
                      EC2=${?}
                      if [ ${EC} -ne 0 ] && [ ${EC2} -eq 0 ]; then
                        echo  "`date` ${PGM} ERROR with communication to ${1}. Connection to -05 .. -14 failed too."|tee -a ${LOG} 
                      fi  # -10
                    fi  # -09
                  fi  # -08
                fi  # -07
              fi  # -06
            fi  # -05
          fi  # -04
        fi  # -03
      fi  # -02
    fi  # -01
  fi  # 
  rm ${TMPERR}
}

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

# Nodig voor New-SAP-SID CSV:
#<cluster>;<SVM/vserver>;<volume>;<qtree>;<quota>;<NFS-export>|<hostname>;

if [ ! -f ${CLUSTERS} ]; then
  echo "  NO CLUSTERS (${CLUSTERS}) found. So exiting ..."|tee -a ${LOG}
  exit 4
fi

echo "  CFILTER=${CFILTER}"
echo "  VFILTER=${VFILTER}"
echo "  MAILTO=${MAILTO}"
sleep 1

for CLUSTER in `cat ${CLUSTERS}|grep -v ^#|grep ${CFILTER}|awk -F\; '{print $1}'|sort`
do
  echo "  CLUSTER=${CLUSTER}"
  SSHCMD ${CLUSTER} "set -showseparator \";\" ;volume show -field vserver,volume,comment,create-time"|grep "${VFILTER}"|sort|while read LINE
  do
#    echo "${LINE}"
    VSERVER=`echo ${LINE}|awk -F\; '{print $1}'`
    VOLUME=`echo ${LINE}|awk -F\; '{print $2}'`
    COMMENT=`echo ${LINE}|awk -F\; '{print $3}'`
    CREATE_TIME=`echo ${LINE}|awk -F\; '{print $4}'`
    echo "    VOLUME=${VOLUME}"

    if [ "${VOLUME}" != "" ]; then

    SSHCMD ${CLUSTER} "set -showseparator \";\" ;qtree show -vserver ${VSERVER} -volume ${VOLUME} -field volume,qtree"|grep ${VOLUME}|while read LINE2
    do
#      echo "${LINE2}"
      QTREE=`echo ${LINE2}|awk -F\; '{print $3}'`
      echo "    QTREE=${QTREE}"

      if [ "${QTREE}" != "" ] && [ "${QTREE}" != "\"\"" ]; then
#
# Volume   Tree      Type    ID        Used  Limit    Used   Limit   Specifier
# -------  --------  ------  -------  -----  -----  ------  ------   ---------

#        LINE3=`SSHCMD ${CLUSTER} "quota report -volume ${VOLUME} -tree ${QTREE}"`
#        echo "      LINE3=${LINE3}"

        echo "${CLUSTER};${VSERVER};${VOLUME};${QTREE};<quota>;<NFS-export>;${COMMENT};${CREATE_TIME};"|tee -a ${TMP}

      fi  # QTREE}" != ""

    done  # LINE2

    fi  # VOLUME <> ""

  done  # LINE

done  # CLUSTER

if [ "${MAILTO}" != "" ]; then
  echo "# CLUSTER;VSERVER;VOLUME;QTREE;QUOTA;NFS-EXPORT;COMMENT;CREATE-TIME;" > ${CSV}
  cat ${TMP} >> ${CSV}
  echo "`date`"| mailx -a ${CSV} -s ":${HOSTNAME}: Volume, Qtree, Quota & NFS-export CSV [${PGM} v${VER}]" ${MAILTO}
  echo "  Mailed CSV (${CSV}) to ${MAILTO}"|tee -a ${LOG}
fi


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

