
#!/bin/sh
# File  : atos-netapp-ontap-inventory-list.sh
# By    : Maarten.deBoer@Atos.net, 221124, 221130
# Subject       : Get Netapp-Ontap(cDOT) inventory list (in 1 row /system)
#set -x
PGM="`basename $0|cut -d\. -f1`"
TMP="/tmp/${PGM}.$$"
VER="0.1"
MAIL=""
HOSTNAME=`hostname |cut -d\. -f1`
SSH="/bin/ssh -n"

# The following VARs might be changed
CLUSTERS="${HOME}/etc/clusters"
USER=""
MAILTO="maarten.deboer@atos.net"
LOGDIR="${HOME}/log"
LOG="${LOGDIR}/${PGM}.log"
DATI=`date +%Y-%m-%d-%H-%M-%S`
CSV="/tmp/${PGM}_${HOSTNAME}_${DATI}.csv"

# Functions
USAGE()
{
  echo "Usage: ${PGM} <option(s)>"
  echo "  Version: ${VER}"
  echo "  options           :"
  echo "    -c              : specify Clusters-file (${CLUSTERS})"
  echo "    -h | --help     : this help"
  echo "    -m | --mail     : do send mail"
  echo "    -V              : Version"
  echo "    -x              : set -x"
  echo "    --mailto        : change MAILTO address & do send mail (${MAILTO})"
}
## MAIN
# Check options
while [ ${#} -ge 1 ]
  do
  case $1 in
    -c) CLUSTERS=${2}; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -m | --mail) MAIL=1; shift ;;
    --mailto) MAILTO=${2}; MAIL=1; shift ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
  done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "CLUSTERS=${CLUSTERS}" | tee -a ${LOG}
echo "LOGDIR=${LOGDIR}" | tee -a ${LOG}
echo "HOSTNAME=${HOSTNAME}" | tee -a ${LOG}
echo "MAIL=${MAIL}" | tee -a ${LOG}
echo "MAILTO=${MAILTO}" | tee -a ${LOG}
sleep 1

if [ ! -d ${LOGDIR} ]; then
  echo "  No LOGDIR (${LOGDIR}) found. Creating ..."|tee -a ${LOG}
  mkdir -p ${LOGDIR}
fi
# Check ${CLUSTERS} file
if [ ! -f ${CLUSTERS} ]; then
  echo "  Clusters-file (${CLUSTERS}) not found. Exiting ..."|tee -a ${LOG};exit 2;
fi

#echo "# Nodename; Cluster Name; Model; Serial Number; System ID; System Type; Site; Contact Person; Contact Number; Email; OS Version;" > ${TMP}

echo "# CLUSTERNAME;NODENAME;MODEL;SER_NR;SYSTEM_ID;SYSTEM_TYPE;LOCATION;OS_VERSION; " > ${TMP}

# Start getting info
cat ${CLUSTERS}|grep -v \^#|awk -F\; '{print $1}'|sort|while read CLUSTERNAME REST
do
  echo "  ${CLUSTERNAME} ..." 
  ping -c 1 -i 1 ${CLUSTERNAME} 1>/dev/null
  EC=${?}
  if [ ${EC} -eq 0 ]; then
# node;location;model;serialnumber;vendor
    ${SSH} ${USER}${CLUSTERNAME} "set -showseparator \";\" ; node show -field node,location,model,serialnumber,systemid,vendor"|grep ${CLUSTERNAME}|while read LINE
    do
      NODENAME=`echo ${LINE}|awk -F\; '{print $1}'`
      LOCATION=`echo ${LINE}|awk -F\; '{print $2}'`
      MODEL=`echo ${LINE}|awk -F\; '{print $3}'`
      SER_NR=`echo ${LINE}|awk -F\; '{print $4}'`
      SYSTEM_ID=`echo ${LINE}|awk -F\; '{print $5}'`
      SYSTEM_TYPE="ONTAP"
      VENDOR=`echo ${LINE}|awk -F\; '{print $6}'`

#      CONTACT=`${SSH} ${USER}${CLUSTERNAME} "set -showseparator \";\" ; system snmp show -field contact"|grep "@"|head -1`
      CONTACT=`${SSH} ${USER}${CLUSTERNAME} "system snmp show -field contact"|grep "@"|head -1`
echo "|${CONTACT}|"

      OS_VERSION=`${SSH} ${USER}${CLUSTERNAME} "set -showseparator \";\" ; version -node ${NODENAME} -field node,version"|grep ${NODENAME}|awk -F\; '{print $2}'|cut -d\: -f1|sed 's/"//g'|head -1`


#echo "# Nodename; Cluster Name; Model; Serial Number; System ID; System Type; Site; Contact Person; Contact Number; Email; OS Version;" > ${TMP}

#      echo "${CLUSTERNAME};${NODENAME};${MODEL};${SER_NR};${SYSTEM_ID};${SYSTEM_TYPE};${LOCATION};${OS_VERSION};${CONTACT};${OS_VERSION}; " |tee -a ${TMP}
      echo "${CLUSTERNAME};${NODENAME};${MODEL};${SER_NR};${SYSTEM_ID};${SYSTEM_TYPE};${LOCATION};${OS_VERSION}; " |tee -a ${TMP}

    done  # LINE
  else
    echo "  NO answer (ping) from ${CLUSTERNAME}"|tee -a ${LOG}
    echo "${CLUSTERNAME};NO answer;" >> ${TMP}
  fi  # ping
done  # FOR

if [ ${MAIL} ] && [ "${MAILTO}" != "" ]; then
  cp ${TMP} ${CSV}
  echo "`date` NetApp Ontap Inventory (CSV-)file"|mailx -a ${CSV} -s ":${HOSTNAME}: NetApp Ontap Inventory (CSV-)file [${PGM} v${VER}]" ${MAILTO}
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
  rm ${CSV}
fi

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

