
#!/bin/sh
# File	: get_vfiler.sh
# By	: MaartenDeBoer.nl, 081010
# Subject	: Get all Vfilers from all filers & place them in a .CSV-file
#(0.2): $LIST added
#(0.3): LIST in CSV
#(0.4)	: Added --mailto
#(0.5)	: Added vfiler DR
#(0.6)	: Add TO_LL
#(0.7)	: Mod. for RHEL6 (mailx -a)
#(0.8)	: Mod; TO_LL removed + ${LOG} added
#(0.9)	: Add EXPORT, --export
PGM="`basename $0|cut -d\. -f1`"
VER="0.9"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
MAILTO="maarten.deboer@atos.net"
HOSTNAME="`hostname`"
MAIL=""
FILERS="${HOME}/etc/filers"
CSV="fsod-filers-vfilers.csv"
LIST=""
LISTFILE="${HOME}/export/${CSV}"
SUBJECT="@${HOSTNAME}: FSOD filers-vfilers-list [${PGM} v${VER}]"
SSH="/usr/bin/ssh -n"

USAGE()
{
  echo "Usage: ${PGM} <options> "
  echo "  Version: ${VER}"
  echo "  options       :"
  echo "    -e          : Etc-file (${ETC})"
  echo "    -h          : this help"
  echo "    -l | --list : produce/export list as ${LISTFILE}"
  echo "    --export    : produce/export list as ${LISTFILE}"
  echo "    -m | --mail : do send mail"
  echo "    -x          : set -x"
  echo "    -V          : Version"
  echo "    --mailto    : do send mail (${MAILTO}) "
  echo "    --help      : this help"
}

# Check options
while [ $# -gt 0 ]
  do
  case $1 in
    -e) ETC=${2}; shift ;;
    -l | --list | --export) LIST=1 ;;
    -m | --mail) MAIL=1 ;;
    --mailto) MAIL=1; MAILTO=${2}; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option $1 not known."; USAGE; exit 1 ;;
  esac
    shift
done

touch ${TMP}

echo "`date` ${PGM} (MAIL=${MAIL} MAILTO=${MAILTO} TOLL=${TOLL} SUBJECT=${SUBJECT}) started"|tee -a ${LOG}

echo "# Filer ; # vFiler; # Status" > ${TMP}

for FILER in `cat ${FILERS}|grep -v \^#|sort`
do
  echo "${FILER}:"
  ${SSH} ${FILER} vfiler status|egrep 'running|DR'|grep -v vfiler|awk '{print $1,$2,$3}'|while read VFILER STATUS DR
  do
    echo "${FILER} ; ${VFILER} ; ${STATUS} ; ${DR} ; " | tee -a ${TMP}
  done
done

echo "#" >> ${TMP}
echo "# Produced ; by ${PGM} (v${VER}) at `date` at ${HOSTNAME}" >> ${TMP}

if [ ${LIST} ]; then
  cp ${TMP} ${LISTFILE}
fi

if [ ${MAIL} ]; then
  cp ${TMP} /tmp/${CSV}
  chmod 777 ${CSV}
  date|mailx -a /tmp/${CSV} -s "${SUBJECT}" ${MAILTO}
  echo "`date` Mailed to ${MAILTO}."|tee -a ${LOG}
  rm /tmp/${CSV}
fi

rm ${TMP}
exit 0

