
#!/bin/sh
# File	: create_new_vfiler.sh
# By	: Maarten.deBoer@Atos.net, 120111
# Subject	: Script to create new FSOD vfiler
#set -x
PGM="`basename $0|cut -d\. -f1`"
VERSION="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
FILERS="${HOME}/etc/filers"
MAXAGGRUSEDPERC=80


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

# Check input-name

if [ "${1}" = "" ]; then
  echo "No Vfilername given. Exiting ..."
  echo "Usage: ${PGM} <vfilername>"
  exit 1
else
  VFILERNAME="${1}"
  VFILERFILE="${HOME}/etc/${VFILERNAME}"
fi

if [ ! -f ${VFILERFILE} ]; then
  echo "No vfiler-config-file (of ${VFILERNAME}) found in ${HOME}/etc/. Exiting ..."
  exit 2
fi

# Check VARs

VFILERCUSTNAME="`grep VFILERCUSTNAME= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
FILERNAME="`grep FILERNAME= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
IPSPACENAME="`grep IPSPACENAME= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
AGGRNAME="`grep AGGRNAME= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERDEFAULTROUTE="`grep VFILERDEFAULTROUTE= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERNAME1="`grep VFILERNAME1= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIPADDR1="`grep VFILERIPADDR1= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERNETMASK1="`grep VFILERNETMASK1= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIFNAME1="`grep VFILERIFNAME1= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"

#Check is required VARs are NOT empty
if [ "${FILERNAME}" = "" ] || [ "${VFILERCUSTNAME}" = "" ] || [ "${IPSPACENAME}" = "" ]|| [ "${AGGRNAME}" = "" ]|| [ "${VFILERDEFAULTROUTE}" = "" ]|| [ "${VFILERNAME1}" = "" ]|| [ "${VFILERIPADDR1}" = "" ]|| [ "${VFILERNETMASK1}" = "" ]|| [ "${VFILERIFNAME1}" = "" ]; then
  echo "Some REQUIRED VARs are empty. Exiting ..."

  echo "FILERNAME=${FILERNAME}"
  echo "VFILERCUSTNAME=${VFILERCUSTNAME}"
  echo "IPSPACENAME=${IPSPACENAME}"
  echo "AGGRNAME=${AGGRNAME}"
  echo "VFILERDEFAULTROUTE=${VFILERDEFAULTROUTE}"
  echo "VFILERNAME1=${VFILERNAME1}"
  echo "VFILERIPADDR1=${VFILERIPADDR1}"
  echo "VFILERNETMASK1=${VFILERNETMASK1}"
  echo "VFILERIFNAME1=${VFILERIFNAME1}"

  exit 2
fi

echo "FILERNAME=${FILERNAME}"
echo "VFILERCUSTNAME=${VFILERCUSTNAME}"
echo "IPSPACENAME=${IPSPACENAME}"
echo "AGGRNAME=${AGGRNAME}"
echo "VFILERDEFAULTROUTE=${VFILERDEFAULTROUTE}"
echo "VFILERNAME1=${VFILERNAME1}"
echo "VFILERIPADDR1=${VFILERIPADDR1}"
echo "VFILERNETMASK1=${VFILERNETMASK1}"
echo "VFILERIFNAME1=${VFILERIFNAME1}"

VFILERNAME2="`grep VFILERNAME2= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIPADDR2="`grep VFILERIPADDR2= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERNETMASK2="`grep VFILERNETMASK2= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIFNAME2="`grep VFILERIFNAME2= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERNAME3="`grep VFILERNAME3= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIPADDR3="`grep VFILERIPADDR3= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERNETMASK3="`grep VFILERNETMASK3= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIFNAME3="`grep VFILERIFNAME3= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERNAME4="`grep VFILERNAME4= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIPADDR4="`grep VFILERIPADDR4= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERNETMASK4="`grep VFILERNETMASK4= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"
VFILERIFNAME4="`grep VFILERIFNAME4= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"

VFILERDNSNAME="`grep VFILERDNSNAME= ${VFILERFILE}|cut -d\= -f2|sed 's/\"//g'`"

echo "VFILERNAME2=${VFILERNAME2}"
echo "VFILERIPADDR2=${VFILERIPADDR2}"
echo "VFILERNETMASK2=${VFILERNETMASK2}"
echo "VFILERIFNAME2=${VFILERIFNAME2}"
echo "VFILERNAME3=${VFILERNAME3}"
echo "VFILERIPADDR3=${VFILERIPADDR3}"
echo "VFILERNETMASK3=${VFILERNETMASK3}"
echo "VFILERIFNAME3=${VFILERIFNAME3}"
echo "VFILERNAME4=${VFILERNAME4}"
echo "VFILERIPADDR4=${VFILERIPADDR4}"
echo "VFILERNETMASK4=${VFILERNETMASK4}"
echo "VFILERIFNAME4=${VFILERIFNAME4}"

echo "VFILERDNSNAME=${VFILERDNSNAME}"


# Check if vfiler somewhere is running
ANSW="`${SSH} ${FILERNAME} vfiler status ${VFILERNAME}|grep -v 'not found'|grep ${VFILERNAME}`"
if [ "${ANSW}" != "" ]; then
  echo "  Vfiler ${ANSW} at ${FILERNAME}. Exiting ..."
  exit 3
fi
echo "Checking all filers for ${VFILERNAME} & (duplicated) IP-address ..."
for FILER in `cat ${FILERS}` 
do
  echo -n "."
  ANSW="`${SSH} ${FILER} vfiler status ${VFILERNAME}|grep -v 'not found'|grep ${VFILERNAME}`"
  if [ "${ANSW}" != "" ]; then
    echo "  Vfiler ${ANSW} at ${FILER}. Exiting ..."
    exit 4
  fi
  ${SSH} ${FILER} vfiler status|grep -v vfiler0|grep running|awk '{print $1}'|while read VFILER
  do  
  # Collecting IP-adres data for RUNNING vfiler for checking duplicated IP-adres
    ${SSH} ${FILER} vfiler status -a ${VFILER} >> ${TMP}
  done
done
echo "."

# Check for duplicated IP-adres
grep -B2 -A2 "${VFILERIPADDR1}" ${TMP}
if [ "${VFILERIPADDR2}" != "" ]; then
  grep -B2 -A2 "${VFILERIPADDR2}" ${TMP}
fi
if [ "${VFILERIPADDR3}" != "" ]; then
  grep -B2 -A2 "${VFILERIPADDR3}" ${TMP}
fi
if [ "${VFILERIPADDR4}" != "" ]; then
  grep -B2 -A2 "${VFILERIPADDR4}" ${TMP}
fi

# Check is enough room at Aggr
USEDPERC="`${SSH} ${FILERNAME} df -mA ${AGGRNAME}|grep -v snapshot|grep -v avail|awk '{print $5}'|sed 's/\%//g'`"
if [ ${USEDPERC} -gt ${MAXAGGRUSEDPERC} ]; then
  echo "${USEDPERC}% used at ${AGGRNAME} at ${FILERNAME}. To MUCH. Exiting ... "
  exit 5
fi


echo "All checks are OK."
read -p "Continue creating (YES) ? " YN
if [ ${YN} != "YES" ]; then
  exit 2
fi

# Start creating
echo "`date` ${PGM} start creating ${VFILERNAME} at ${FILERNAME}"|tee -a ${LOG}

VFILERVOL0="vol0_vfiler${VFILERCUSTNAME}"

#ssh nlnaf62 vol create vol0_vfilerslb02 -l C aggr2001 1g
${SSH} ${FILERNAME} vol create ${VFILERVOL0} -l C ${AGGRNAME} 1g

#ssh nlnaf62 snap sched vol0_vfilerslb02 6 2 6@8,12,16,20
${SSH} ${FILERNAME} snap sched ${VFILERVOL0} 6 2 6@8,12,16,20

#ssh nlnaf62 vfiler create nlnafvslb02 -n -s slb01-ipspace -i 199.6.145.77 /vol/vol0_vfilerslb02
${SSH} ${FILERNAME} vfiler create ${VFILERNAME} -n -s ${IPSPACENAME}-ipspace -i ${VFILERIPADDR1} /vol/${VFILERVOL0}

if [ "${VFILERIPADDR2}" != "" ]; then
  #ssh nlnaf62 vfiler add nlnafvslb02 -i 10.217.4.227
  ${SSH} ${FILERNAME} vfiler add ${VFILERNAME} -i ${VFILERIPADDR2}
fi
if [ "${VFILERIPADDR3}" != "" ]; then
  #ssh nlnaf62 vfiler add nlnafvslb02 -i 10.217.4.227
  ${SSH} ${FILERNAME} vfiler add ${VFILERNAME} -i ${VFILERIPADDR3}
fi
if [ "${VFILERIPADDR4}" != "" ]; then
  #ssh nlnaf62 vfiler add nlnafvslb02 -i 10.217.4.227
  ${SSH} ${FILERNAME} vfiler add ${VFILERNAME} -i ${VFILERIPADDR4}
fi

exit

sleep 60
#ssh nlnaf62 ifconfig sig01-blu-1409 nlnafvslb02 netmask 255.255.254.0 partner sig01-blu-1409
${SSH} ${FILERNAME} ifconfig ${VFILERIFNAME1} ${VFILERNAME1} netmask ${VFILERNETMASK1} partner ${VFILERIFNAME1}
if [ "${VFILERIPADDR2}" != "" ]; then
# ssh nlnaf62 ifconfig sig01-blu-1408 nlnafvslb02be netmask 255.255.252.0 partner sig01-blu-1408
${SSH} ${FILERNAME} ifconfig ${VFILERIFNAME2} ${VFILERNAME2} netmask ${VFILERNETMASK2} partner ${VFILERIFNAME2}
fi
if [ "${VFILERIPADDR3}" != "" ]; then
# ssh nlnaf62 ifconfig sig01-blu-1408 nlnafvslb02be netmask 255.255.252.0 partner sig01-blu-1408
${SSH} ${FILERNAME} ifconfig ${VFILERIFNAME3} ${VFILERNAME3} netmask ${VFILERNETMASK3} partner ${VFILERIFNAME3}
fi
if [ "${VFILERIPADDR4}" != "" ]; then
# ssh nlnaf62 ifconfig sig01-blu-1408 nlnafvslb02be netmask 255.255.252.0 partner sig01-blu-1408
${SSH} ${FILERNAME} ifconfig ${VFILERIFNAME4} ${VFILERNAME4} netmask ${VFILERNETMASK4} partner ${VFILERIFNAME4}
fi

#ssh nlnaf62 vfiler run nlnafvslb02 route add default 199.6.144.1 1
${SSH} ${FILERNAME} vfiler run ${VFILERIFNAME} route add default ${VFILERDEFAULTROUTE} 1
##ssh nlnaf62 vfiler run nlnafvslb02 route add net 10.217.92/23 10.217.4.1 1
##ssh nlnaf62 vfiler run nlnafvslb02 route add net 10.217.94/23 10.217.4.1 1

#ssh nlnaf62 wrfile /vol/vol0_vfilerslb02/etc/resolv.conf
#nameserver 10.217.5.53
#nameserver 10.217.5.54
#nameserver 199.6.129.53
#nameserver 199.6.129.54
#search srvfrm-back.int.slb.atosorigin-asp.com slb.atosorigin-asp.com ddns.slb.atosorigin-asp.com dmz.int.slb.atosorigin-asp.com

${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options dns.domainname ${VFILERDNSNAME}

${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options dns.enable on
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options cifs.smb2.client.enable on
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options cifs.smb2.enable on
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options httpd.admin.enable on
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} secureadmin setup ssh
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} secureadmin enable ssh2
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options rsh.enable off
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options rsh.access none
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options security.passwd.rules.everyone on
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options security.passwd.rules.minimum.symbol 1
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options security.passwd.firstlogin.enable on
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options security.passwd.rules.history 6
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options ssh.idle.timeout 600
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options nfs.export.auto-update off
${SSH} ${FILERNAME} vfiler run ${VFILERNAME} options nfs.udp.enable off

echo "vFiler ${VFILERNAME} running at ${FILERNAME} : "
${SSH} ${FILERNAME} vfiler status -a ${VFILERNAME}


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

