
#!/bin/bash
#--------------------------------------------------------------------------#
# Name: backup_auditlog.sh                                                 #
# Description:  Script to copy /vol/vol0/etc/log/auditlog* from filers     #
# Subject	:  Script to copy /vol/vol0/etc/log/auditlog* from filers     #
# Version: 1.2                                                             #
# References:                                                              #
# Documentation:                                                           #
# Parameters: none                                                         #
# Usage:  backup_auditlog.sh                                               #
# Global Description:                                                      #
# Author(s): Atos                                                          #
# Change log:                                                              #
# aut   date            vers    comments                                   #
# RL    18-10-2011      1.0     Initial version Richard Loos               #
# RL    08-04-2013      1.1     Modification for data transfer via SM or   #
#                               MGT LAN                                    #
# MdB   10-07-2014	1.2	Added check of run OK by making a result list #
# MdB	04-02-2016	1.3	Check result list against filers-file, Mod. FILE-> LOG
#--------------------------------------------------------------------------#
# Initialize variabels                                                     #
#--------------------------------------------------------------------------#
PGM="`basename $0|cut -d\. -f1`"
VER="1.3"
TMP="/tmp/${PGM}.$$"
LOGDIR=${HOME}/log
#FILE=${LOGDIR}/backup_auditlog.log
LOG=${HOME}/log/${PGM}.log
BACKUP_VOLUME="na_auditlog_backups"
MAILTO="maarten.deboer@atos.net fsod@atos.net GMPL-MS-ICS-ICS3-FSOD@atos.net"
HOSTNAME="`hostname|cut -d\. -f1`"
FILERS="${HOME}/etc/filers"
#--------------------------------------------------------------------------#
# Destination filer (DST_FILER)                                            #
#--------------------------------------------------------------------------#
DST_FILER="nlnaf62"
#--------------------------------------------------------------------------#
# Create LOG                                                              #
#--------------------------------------------------------------------------#
# MdB: Disabled. because logrotate /clean-up in place. So older logfiles can be checked as well
#cp ${LOG} ${LOG}.tmp
#tail -n1000 ${LOG}.tmp > ${LOG}
#rm ${LOG}.tmp

touch ${TMP}
echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}

#--------------------------------------------------------------------------#
# Start ndmpcopy of /vol0/etc/log/auditilog* to destination filer          # 
#--------------------------------------------------------------------------#
for FILER in $(cat ${FILERS})
do
  #------------------------------------------------------------------------#
  # Check if SM LAN is defined in /etc/rc file.                            #
  # If not use MGT LAN for transfer.                                       #
  #------------------------------------------------------------------------#
  FILER_SM=`ssh ${FILER} rdfile /etc/rc | grep -v "#" | grep "\-sm"`
  if [ "${FILER_SM}" = "" ]
  then
    FILER_SM="${FILER}"
    DST_FILER_SM="${DST_FILER}"
  else
    FILER_SM="${FILER}-sm"
    DST_FILER_SM="${DST_FILER}-sm"
  fi
  #------------------------------------------------------------------------#
  # Request for password of user ndmpd_user of source (PWD_SRC)            #
  # and destination filer (PWD_DST)                                        # 
  #------------------------------------------------------------------------#
  PWD_SRC=`ssh ${FILER} ndmpd password ndmpd_user | awk '{print $2}'`
  PWD_DST=`ssh ${DST_FILER} ndmpd password ndmpd_user | awk '{print $2}'`
  if [[ "${PWD_SRC}" = "such" || "${PWD_DST}" = "such" ]]
  then
    #----------------------------------------------------------------------#
    # If no user ndmpd_user, do:                                           #
    # filer> useradmin user add ndmpd_user -g "Backup Operators" -m xxx    #
    #----------------------------------------------------------------------#
    echo "No user ndmpd_user on filers ${FILER} and/or ${DST_FILER}, please create one"|tee -a ${LOG}
  else
    #----------------------------------------------------------------------#
    # If destination qtree doesn't exist, create one                       #
    #----------------------------------------------------------------------#
    DIR_DST=`ssh ${DST_FILER} qtree status | grep "${BACKUP_VOLUME}" | grep "${FILER}_etc" ` 
    if [ -z "${DIR_DST}" ]
    then
      echo "create /vol/${BACKUP_VOLUME}/${FILER}_etc on ${DST_FILER}"|tee -a ${LOG}
      ssh ${DST_FILER} qtree create /vol/${BACKUP_VOLUME}/${FILER}_etc 
      sleep 30
    fi
    #----------------------------------------------------------------------#
    # Get ROOTVOL volume name (this can be different then to vol0)         #
    #----------------------------------------------------------------------#
    ROOTVOL="`ssh -n ${FILER} vol status | grep ' root'| awk '{print $1}'`"

    #----------------------------------------------------------------------#
    # Ndmpcopy of /vol0/etc/log/auditlog* of filers to destination filer   # 
    #----------------------------------------------------------------------#
    echo "ssh ${FILER} ndmpcopy -sa ndmpd_user:${PWD_SRC} -da ndmpd_user:${PWD_DST} ${FILER_SM}:/vol/${ROOTVOL}/etc/log/auditlog.0 ${DST_FILER_SM}:/vol/${BACKUP_VOLUME}/${FILER}_etc/log/"
    ssh ${FILER} ndmpcopy -sa ndmpd_user:${PWD_SRC} -da ndmpd_user:${PWD_DST} ${FILER_SM}:/vol/${ROOTVOL}/etc/log/auditlog.0 ${DST_FILER_SM}:/vol/${BACKUP_VOLUME}/${FILER}_etc/log/ >>${LOG} 2>&1
    echo "ssh ${FILER} ndmpcopy -sa ndmpd_user:${PWD_SRC} -da ndmpd_user:${PWD_DST} ${FILER_SM}:/vol/${ROOTVOL}/etc/log/auditlog.1 ${DST_FILER_SM}:/vol/${BACKUP_VOLUME}/${FILER}_etc/log/"
    ssh ${FILER} ndmpcopy -sa ndmpd_user:${PWD_SRC} -da ndmpd_user:${PWD_DST} ${FILER_SM}:/vol/${ROOTVOL}/etc/log/auditlog.1 ${DST_FILER_SM}:/vol/${BACKUP_VOLUME}/${FILER}_etc/log/ >>${LOG} 2>&1
  fi
done

# Making result-list and mailing it
echo "List of files created in the last (1) day (`date`)" >> ${TMP}
echo "In /filers/${DST_FILER}/${BACKUP_VOLUME} " >> ${TMP}
cd /filers/${DST_FILER}/${BACKUP_VOLUME}
find * -mtime -1 -ls >> ${TMP}

for FILER in $(cat ${FILERS})
do
  grep ${FILER} ${TMP} 1> /dev/null
  EC="${?}"
  if [ ${EC} -gt 0 ]; then
    echo "Filer ${FILER} not found in ${PGM}. Please check." >> ${TMP}.2
  fi
done  # for

# Merge backup-list to check output for mail-send
echo "" >> ${TMP}.2
cat ${TMP} >> ${TMP}.2

cat ${TMP}.2 | mailx -s "@${HOSTNAME}: Result of auditlogfile backup [${PGM} v${VER}]" ${MAILTO}
echo "  Mailed result list to ${MAILTO}"|tee -a ${LOG}

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

