
#!/bin/sh
# File	: get_inventory_VIPAddresses.sh
# By	: Maarten.deBoer@atos.net, 120420, 130923
# Subject	: Scripts to collect VIPAddresses info (for FSOD-Inventory)
#(0.2)	: Add; rdfile /etc/rc & vfiler; routes -s
#(0.3)	: Mod: ;->, Other header, sed ...
#(0,4)	:"Mod: Header, no #; + whoami
#set -x
PGM="`basename $0|cut -d\. -f1`"
VER="0.4"
TMP="/tmp/${PGM}.$$"
CSV="/tmp/${PGM}.csv"
MAILTO="maarten.deboer@atos.net"
SSH="/usr/bin/ssh -n"
FILERS=${HOME}/etc/filers
HOSTNAME="`hostname|cut -d\. -f1`"
LOG=${HOME}/log/${PGM}.log

LANDSCAPE="FSOD-Atos"
FILER="<filer>"
VFILER="VFiler"
IPADDR="IPAddress"
MASK="Netmask"
DEFGW="Gateway"
IPSPACE="IPSpace"
INTERFACE="Interface"
NWBBL="NetworkBubble"
VLAN="VLAN"
REMARKS="Remarks"

CSV="/tmp/${LANDSCAPE}_${PGM}.csv"

# Virtual Filer (Landscape|filername|vfilername)|IP Address|Netmask|Gateway|(Landscape|filername|)IP Space|Interface Network Bubble|VLAN Nr|Remarks 
# VFiler;IPAddress;Netmask;Gateway;IPSpace;Interface;NetworkBubble;VLAN;Remarks
echo "${VFILER},${IPADDR},${MASK},${DEFGW},${IPSPACE},${INTERFACE},${NWBBL},${VLAN},${REMARKS}"|tee -a ${TMP}

for FILER in `cat $FILERS|grep -v \#`
do
  echo "${FILER} ..."
  ${SSH} ${FILER} rdfile /etc/rc > ${TMP}.rc
  ${SSH} ${FILER} vfiler status|grep -v vfiler|awk '{print $1}'|while read VFILER
  do
    ${SSH} ${FILER} vfiler status -r ${VFILER} > ${TMP}.2
    IPSPACE="`grep ipspace ${TMP}.2|cut -d\: -f2`"
    VFILERSTATUS="`grep ${VFILER} ${TMP}.2|awk '{print $2,$3,$4}'|sed 's/\,/-/g'`"
    REMARKS="${VFILERSTATUS}"
    cat ${TMP}.2|grep 'address'|while read LINE
    do
      echo "${LINE}"
      IPADDR="`echo "${LINE}"|cut -d\: -f2|cut -d\[ -f1`"
      ANSW="`echo "${LINE}"|grep unconfigured`"
      if [ "${ANSW}" = "" ]; then  # Not unconfigured
        INTERFACE="`echo "${LINE}"|cut -d\: -f2|cut -d\[ -f2|cut -d\] -f1`"
        NWBBL="`echo "${LINE}"|cut -d\- -f2`"
        VLAN="`echo "${LINE}"|cut -d\- -f3|cut -d\] -f1`"
      else
        INTERFACE="[unconfigured]"
        NWBBL=" "
        VLAN=" "
      fi
# From rc-file
# When alias, layout is diff.
      MASK="`grep -v ^# ${TMP}.rc|grep alias|grep ifconfig|grep "${VFILER} "|awk '{print $6}'`"
# If no alias, MASK=empty, then normal layout
      if [ "${MASK}" = "" ]; then
        MASK="`grep -v ^# ${TMP}.rc|grep ifconfig|grep "${VFILER} "|awk '{print $5}'`"
      fi  # MASK
      DEFGW="`${SSH} ${FILER} vfiler run ${VFILER} route -s| grep default| awk '{print $2}'`"

      echo "${LANDSCAPE}|${FILER}|${VFILER},${IPADDR},${MASK},${DEFGW},${LANDSCAPE}|${FILER}|${IPSPACE},${INTERFACE},${NWBBL},${VLAN},${REMARKS}"|sed 's/ //g'|tee -a ${TMP}
    done  # vfiler status
    rm ${TMP}.2
  done  # do VFILER
  rm ${TMP}.rc
done  # for FILER

echo "#"|tee -a ${TMP}
echo "# Ran at ${HOSTNAME}, by ${PGM} v${VER}, as `whoami`, at `date`,"|tee -a ${TMP}

cp ${TMP} ${CSV}
date|mailx -a ${CSV} -s "@${HOSTNAME}: [${PGM} v${VER}]" ${MAILTO}
echo "`date` Mailed to ${MAILTO}"|tee -a ${LOG}
rm ${TMP} ${CSV}
exit 0

