
#!/bin/sh
# File	: na-rpt-de-carbon-kpi-s.sh
# By	: Maarten.deBoer@Atos.net, 201015
# Subject	: Script to (gather &)report de-carbonisation KPI's (like # HDD's, # SDD's, Aggr. size/cap and utilisation) for NetApp-systems and mail this info
#(0.1),201015	: Initial
#(0.2),201015	: Changed name from na_rpt_de-carbon_kpi-s.sh. So, it can be better split at Rx end
#
PGM=`basename $0|cut -d\. -f1`
VER="0.2"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
HOSTNAME=`hostname |cut -d\. -f1`
DATI=`date +%Y-%m-%d-%H-%M-%S`
CSV_CD="/tmp/${PGM}_${HOSTNAME}_${DATI}_cdot-disks.csv"
CSV_CA="/tmp/${PGM}_${HOSTNAME}_${DATI}_cdot-aggrs.csv"
CSV_7D="/tmp/${PGM}_${HOSTNAME}_${DATI}_7-mode-disks.csv"
CSV_7A="/tmp/${PGM}_${HOSTNAME}_${DATI}_7-mode-aggrs.csv"
CSV_V="/tmp/${PGM}_${HOSTNAME}_${DATI}_versions.csv"
ASC_S="/tmp/${PGM}_${HOSTNAME}_${DATI}_snmp.asc"

#MAILTO="maarten.deboer@atos.net nl19471@nlxnetapp01.bcklan.ao-srv.com"
MAILTO="nl19471@nlxnetapp01.bcklan.ao-srv.com"

NA_SYSTEMS="${HOME}/etc/na_systems"

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
if [ ! -f ${NA_SYSTEMS} ]; then
  echo "  NO NA_SYSTEMS ${NA_SYSTEMS} found. Exiting ..."|tee -a ${LOG}
  exit 3
fi

echo "# Sizing in GB" > ${CSV_CD}
echo "# Sizing in GB" > ${CSV_CA}
echo "# Sizing in GB" > ${CSV_7D}
echo "# Sizing in GB" > ${CSV_7A}
echo "system-name; ontap-version;" > ${CSV_V}
echo "" > ${ASC_S}

cat ${NA_SYSTEMS}|grep -v ^#|while read NA_SYSTEM REST
do
  echo -n "  ${NA_SYSTEM} ..."

# Register ONTAP (OS) Version
  OS_VER=`${SSH} ${NA_SYSTEM} "version"|cut -d\: -f1|grep NetApp`
  echo "${NA_SYSTEM};${OS_VER}" >> ${CSV_V}

# Register SNMP (for contact and location information)
  echo "# ${NA_SYSTEM}:" >> ${ASC_S}
  ${SSH} ${NA_SYSTEM} "snmp" >> ${ASC_S}

# Check for cDOT (Release 8 & Release 9)
  ANSW=`echo "${OS_VER}"|egrep -i 'Release 8|Release 9'|grep -vi '7-mode'`
  if [ "${ANSW}" != "" ]; then
    echo "  cDOT: ${OS_VER} "

# Get the list of disk types. Remove the GB's
    ${SSH} ${NA_SYSTEM} "set -unit GB -showseparator \";\" ; disk show -field disk,owner,aggregate,type,model,usable-size"|egrep "disk|GB"|sed 's/GB//g' >> ${CSV_CD}

# Get Aggregate info. Remove the GB's
    ${SSH} ${NA_SYSTEM} "set -unit GB -showseparator \";\" ; storage aggregate show -field aggregate,physical-used,size,usedsize,owner-name,storage-type"|egrep "aggregate|GB"|sed 's/GB//g' >> ${CSV_CA}

  else  # grep cDOT
# Check for 7-mode
    ANSW=`echo "${OS_VER}"|grep -i '7-mode'`
    if [ "${ANSW}" != "" ]; then
      echo "  7-MODE: ${OS_VER} "

# Get the list of disk types. 
#      echo "system ${NA_SYSTEM};" >> ${CSV_7D}
      ${SSH} ${NA_SYSTEM} 'sysconfig -r'|egrep 'data|parity|spare'|grep -v Pool|awk -v NA_SYSTEM="${NA_SYSTEM}" '{print NA_SYSTEM";"$1";"$2";"$3";"$4";"$5";"$6";"$7";"$8";"$9";"$10";"$11";"}' >> ${CSV_7D}
# Get Aggregate info. Remove the GB's
#      echo "system ${NA_SYSTEM};" >> ${CSV_7A}
      ${SSH} ${NA_SYSTEM} 'df -gA'|grep -v snapshot|awk -v NA_SYSTEM="${NA_SYSTEM}" '{print NA_SYSTEM";"$1";"$2";"$3";"$4";"}'|sed 's/GB//g' >> ${CSV_7A}

    else  # grep 7-mode
      echo "  ${NA_SYSTEM} : ?? (${OS_VER}) "|tee -a ${LOG}
    fi  # grep 7-mode
  fi  # grep cDOT

done  # NA_SYSTEMS


echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${CSV_CD}
echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${CSV_CA}
echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${CSV_7D}
echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${CSV_7A}
echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${CSV_V}
echo "# `date` by ${PGM} v${VER} at ${HOSTNAME}" >> ${ASC_S}

echo "`date` by ${PGM} v${VER} at ${HOSTNAME}"| mailx -a ${ASC_S} -a ${CSV_V} -a ${CSV_CD} -a ${CSV_CA} -a ${CSV_7D} -a ${CSV_7A} -s "netapp-de-carbon-kpi-s: from ${HOSTNAME} at ${DATI} [${PGM} v${VER}]" ${MAILTO}
echo "  Info mailed to ${MAILTO}"|tee -a ${LOG}

rm ${ASC_S} ${CSV_V} ${CSV_CD} ${CSV_CA} ${CSV_7D} ${CSV_7A}
echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
exit 0

