
#!/bin/sh
# File  : get_filer_useradmin.sh
# By    : Maarten de Boer, 100302
# Subject       : Get useradmin info from NetApp-filers
#(0.2)	: Put a date at filename
#(0.3)	: Added Vfiler get
#(0.4)	: Mod for RHEL6 (mailx -a)
#
#set -x
PGM="`basename $0|cut -d\. -f1`"
VER="0.4"
TMP="/tmp/${PGM}.$$"
HOSTNAME="`hostname`"
DATE="`date +%Y-%m-%d`"
CSV="FSOD_filer_useradmin_${DATE}.csv"
FILERS="${HOME}/etc/filers"
MAILTO="maarten.deboer@atos.net richard.loos@atos.net"
SSH="/usr/bin/ssh -n"

echo "MAILTO=${MAILTO}"
echo "PGM=${PGM}"
echo "TMP=${TMP}"
echo "VER=${VER}"
echo "Will start ..."
sleep 1

touch ${TMP}
for FILER in `cat ${FILERS}|grep -v \#`
do
  echo "${FILER} ..."
  echo "#USER;INFO;RID;GROUPS;FILER;" >> ${TMP}
  echo "" >> ${TMP}
  ${SSH} ${FILER} useradmin user list | while read LINE
  do
#   if line <> "" then add ;
    if [ "$LINE" != "" ]; then
      echo "$LINE;" >> ${TMP}
    else
      echo "${FILER}; " >> $TMP
      echo "" >> $TMP
    fi
  done
  echo "#GROUP;INFO;RID;ROLES;FILER;" >> ${TMP}
  echo "" >> ${TMP}
  ${SSH} ${FILER} useradmin group list | while read LINE
  do
#   if line <> "" then add ;
    if [ "$LINE" != "" ]; then
      echo "$LINE;" >> ${TMP}
    else
      echo "${FILER}; " >> $TMP
      echo "" >> $TMP
    fi
  done
  echo "#ROLE;INFO;ALLOWED CAPABILITIES;;FILER;" >> ${TMP}
  echo "" >> ${TMP}
  ${SSH} ${FILER} useradmin role list | while read LINE
  do
#   if line <> "" then add ;
    if [ "$LINE" != "" ]; then
      echo "$LINE;" >> ${TMP}
    else
      echo " ; ${FILER}; " >> $TMP
      echo "" >> $TMP
    fi
  done

# Check per vfiler
  ${SSH} ${FILER} vfiler status | grep running | grep -v vfiler | awk '{print $1}' | while read VFILER
  do
    echo "${FILER}/${VFILER} ..."
    echo "#USER;INFO;RID;GROUPS;FILER/VFILER;" >> ${TMP}
    echo "" >> ${TMP}
    ${SSH} ${FILER} vfiler run ${VFILER} useradmin user list | grep -v '====='|while read LINE
    do
#     if line <> "" then add ;
      if [ "$LINE" != "" ]; then
        echo "$LINE;" >> ${TMP}
      else
        echo "${FILER}/${VFILER}; " >> $TMP
        echo "" >> $TMP
      fi
    done
    echo "#GROUP;INFO;RID;ROLES;FILER/VFILER;" >> ${TMP}
    echo "" >> ${TMP}
    ${SSH} ${FILER} vfiler run ${VFILER} useradmin group list |grep -v '====='| while read LINE
    do
#     if line <> "" then add ;
      if [ "$LINE" != "" ]; then
        echo "$LINE;" >> ${TMP}
      else
        echo "${FILER}/${VFILER}; " >> $TMP
        echo "" >> $TMP
      fi
    done
    echo "#ROLE;INFO;ALLOWED CAPABILITIES;;FILER/VFILER;" >> ${TMP}
    echo "" >> ${TMP}
    ${SSH} ${FILER} vfiler run ${VFILER} useradmin role list |grep -v '====='| while read LINE
    do
#     if line <> "" then add ;
      if [ "$LINE" != "" ]; then
        echo "$LINE;" >> ${TMP}
      else
        echo " ; ${FILER}/${VFILER}; " >> $TMP
        echo "" >> $TMP
      fi
    done
  done
done

cat ${TMP} | gawk 'BEGIN {RS=""}
{
  t=0
  while (++t<=NF) {printf "%s ", $t}
  printf "\n"
}'file |sed -e 's/Name://'|sed -e 's/Info://'|sed -e 's/Rid://'|sed -e 's/Groups://'|sed -e 's/Roles://'|sed -e 's/Allowed Capabilities://' > /tmp/${CSV}

echo "#" >> /tmp/${CSV}
echo "# Produced; by ${PGM} v${VER} at `date` at ${HOSTNAME} " >> /tmp/${CSV}

date|mailx -a /tmp/${CSV} -s ":${HOSTNAME}: Filer Useradmin [${PGM} v${VER}]" ${MAILTO}
echo "Mailed to ${MAILTO} ..."

rm ${TMP} /tmp/${CSV}
exit 0

