
#!/bin/sh
#@ Maarten.deBoer@Atos.net, 131219
#= Script to create scripts for moving Shares at volumes to other aggr
# Create 2 scripts per shares; 1) SM-init. 2) share-switch-over
#
PGM="`basename $0|cut -d\. -f1`"
VER="0.4"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
ETC="${HOME}/etc/${PGM}"
SSH="/usr/bin/ssh"
# Layout
# src-filer; src-aggr;vfiler;vol-name;share-name
# nlnaf33;aggr1003;nlnafving03;/vol/ec_ing03_vol011/;udv31013
#TARGETFILER="nlnaf33"
TARGETFILER="nlnaf26"

case ${TARGETFILER} in
  nlnaf31) TARGETDRFILER="nlnaf35" ;;
  nlnaf32) TARGETDRFILER="nlnaf36" ;;
  nlnaf33) TARGETDRFILER="nlnaf37" ;;
  nlnaf34) TARGETDRFILER="nlnaf38" ;;
esac

#TARGETAGGR="aggr1001"
TARGETAGGR="aggr401"

SMSCRIPTS="$HOME/move-scripts/1_sm-init-share-vol-move"
SWITCHSCRIPTS="$HOME/move-scripts/2_switch-share-vol-move"
BACKOUTSCRIPTS="$HOME/move-scripts/3_backout-share-vol-move"


if [ ! -f ${ETC} ]; then 
  echo "ETC-file ${ETC} NOT found. Exting ..."
  exit 2
fi

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

echo "ETC=${ETC}"|tee -a ${LOG}
echo "TARGETFILER=${TARGETFILER}"|tee -a ${LOG}
echo "TARGETDRFILER=${TARGETDRFILER}"|tee -a ${LOG}
echo "TARGETAGGR=${TARGETAGGR}"|tee -a ${LOG}

cat ${ETC}|grep -v ^#| while read LINE
do
  SRCFILER="`echo ${LINE}|awk -F\; '{print $1}'`"
  case ${SRCFILER} in
    nlnaf26) SRCDRFILER="nlnaf26" ;;
    nlnaf31) SRCDRFILER="nlnaf35" ;;
    nlnaf32) SRCDRFILER="nlnaf36" ;;
    nlnaf33) SRCDRFILER="nlnaf37" ;;
    nlnaf34) SRCDRFILER="nlnaf38" ;;
  esac
  SRCAGGR="`echo ${LINE}|awk -F\; '{print $2}'`"
  VFILER="`echo ${LINE}|awk -F\; '{print $3}'`"
  VOLNAME="`echo ${LINE}|awk -F\; '{print $4}'|sed 's/\/vol//g'|sed 's/\///g'`"
  SHARENAME="`echo ${LINE}|awk -F\; '{print $5}'`"
# Getting source size
  VOLSIZEGB="`${SSH} -n ${SRCFILER} df -g ${VOLNAME}|egrep -v 'Filesystem|snapshot'|awk '{print $2}'|sed 's/GB//g'`"
  echo "# ${SRCFILER}($SRCDRFILER)|${SRCAGGR}|${VFILER}|${VOLNAME}|${SHARENAME}|${VOLSIZEGB}g|"|tee -a ${SMSCRIPTS}_${SHARENAME}.sh
#
# Create SM-sh's
#ssh nlnaf33 options snapmirror.enable on
#ssh nlnaf33 vol create <volname>_new -l C aggr1001 <size>
#ssh nlnaf33 vol restrict <volname>_new
#ssh nlnaf33 snapmirror initialize -S nlnaf33-sm:<volname> <volname>_new
  echo "${SSH} ${TARGETFILER} options snapmirror.enable on" >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vol create ${VOLNAME}_new -l C ${TARGETAGGR} ${VOLSIZEGB}g" >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vol restrict ${VOLNAME}_new" >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} snapmirror initialize -S ${SRCFILER}-sm:${VOLNAME} ${VOLNAME}_new" >> ${SMSCRIPTS}_${SHARENAME}.sh
# DR site
  echo "# DR site " >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} options snapmirror.enable on" >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} options snapmirror.enable on" >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} vol create ${VOLNAME}_new -l C ${TARGETAGGR} ${VOLSIZEGB}g" >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} vol restrict ${VOLNAME}_new" >> ${SMSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} snapmirror initialize -S ${SRCDRFILER}-sm:${VOLNAME} ${VOLNAME}_new" >> ${SMSCRIPTS}_${SHARENAME}.sh

# switch-over
  echo "# ${SRCFILER}($SRCDRFILER)|${SRCAGGR}|${VFILER}|${VOLNAME}|${SHARENAME}|"|tee -a ${SWITCHSCRIPTS}_${SHARENAME}.sh
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -delete "<sharename>"
#ssh nlnaf33 options snapmirror.enable on
#ssh nlnaf33 snapmirror update -S nlnaf33-sm:<volname> <volname>_new
#ssh nlnaf33 snapmirror quiesce <volname>_new
#ssh nlnaf33 snapmirror break <volname>_new
  echo "${SSH} ${SRCFILER} vfiler run ${VFILER} cifs shares -delete ${SHARENAME}" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "#" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} options snapmirror.enable on" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} snapmirror update -S ${SRCFILER}-sm:${VOLNAME} ${VOLNAME}_new" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} snapmirror quiesce ${VOLNAME}_new" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} snapmirror break ${VOLNAME}_new" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "# DR" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} options snapmirror.enable on" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} snapmirror update -S ${SRCFILER}-sm:${VOLNAME} ${VOLNAME}_new" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} snapmirror quiesce ${VOLNAME}_new" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} snapmirror break ${VOLNAME}_new" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "# @VFILER" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
#ssh nlnaf33 vfiler remove nlnafving03 /vol/<volname>
#ssh nlnaf33 vol rename <volname> <volname>_old
#ssh nlnaf33 vol rename <volname>_new <volname>
#ssh nlnaf33 vfiler add nlnafving03 /vol/<volname>
  echo "${SSH} ${SRCFILER} vfiler remove ${VFILER} /vol/${VOLNAME}" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${SRCFILER} vol rename ${VOLNAME} ${VOLNAME}_old" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vol rename ${VOLNAME}_new ${VOLNAME}" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler add ${VFILER} /vol/${VOLNAME}" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "# DR" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${SRCDRFILER} vol rename ${VOLNAME} ${VOLNAME}_old" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} vol rename ${VOLNAME}_new ${VOLNAME}" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh

  echo "# Shares" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -add "<sharename>" "/vol/<volname>/<qtreename>" -comment "nlnaf33:/vol/<volname>/<qtreename>"
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -add \"${SHARENAME}\" \"/vol/${VOLNAME}/${SHARENAME}\" -comment \"${TARGETFILER}:/vol/${VOLNAME}/${SHARENAME}\" " >> ${SWITCHSCRIPTS}_${SHARENAME}.sh

#ssh nlnaf33 vfiler run nlnafving03 cifs access "<sharename>" S-1-5-11 Full Control
#ssh nlnaf33 vfiler run nlnafving03 cifs access -delete "<sharename>" everyone Full Control
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -change "<sharename>" -accessbasedenum
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -change "<sharename>" -novscanread
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -change "<sharename>" -no_caching

  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs access \"${SHARENAME}\" S-1-5-11 Full Control" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs access -delete \"${SHARENAME}\" everyone Full Control" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -change \"${SHARENAME}\" -accessbasedenum" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -change \"${SHARENAME}\" -novscanread" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -change \"${SHARENAME}\" -no_caching" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "#" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
#ssh nlnaf33 vfiler run nlnafving03 quota on <volname>
#ssh nlnaf33 vol options <volname> fs_size_fixed off
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} quota on ${VOLNAME}" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vol options ${VOLNAME} fs_size_fixed off " >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
# Clean-up
#ssh nlnaf33 vol offline <vol>_old
  echo "${SSH} ${SRCFILER} vol offline ${VOLNAME}_old " >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "#" >> ${SWITCHSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares \"${SHARENAME}\" " >> ${SWITCHSCRIPTS}_${SHARENAME}.sh


# BACKOUT
  echo "# ${SRCFILER}($SRCDRFILER)|${SRCAGGR}|${VFILER}|${VOLNAME}|${SHARENAME}|"|tee -a ${BACKOUTSCRIPTS}_${SHARENAME}.sh

#ssh nlnaf33 vol online <vol>_old
  echo "${SSH} ${SRCFILER} vol online ${VOLNAME}_old " >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh

#ssh nlnaf33 vfiler run nlnafving03 cifs shares -delete "<sharename>"
  echo "${SSH} ${SRCFILER} vfiler run ${VFILER} cifs shares -delete ${SHARENAME}" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh

#ssh nlnaf33 vfiler remove nlnafving03 /vol/<volname>
#ssh nlnaf33 vol rename <volname> <volname>_new
#ssh nlnaf33 vol rename <volname>_old <volname>
#ssh nlnaf33 vfiler add nlnafving03 /vol/<volname>
  echo "${SSH} ${SRCFILER} vfiler remove ${VFILER} /vol/${VOLNAME}" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${SRCFILER} vol rename ${VOLNAME} ${VOLNAME}_new" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vol rename ${VOLNAME}_old ${VOLNAME}" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler add ${VFILER} /vol/${VOLNAME}" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "# DR" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${SRCDRFILER} vol rename ${VOLNAME} ${VOLNAME}_new" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETDRFILER} vol rename ${VOLNAME}_old ${VOLNAME}" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh

  echo "#" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -add "<sharename>" "/vol/<volname>/<qtreename>" -comment "nlnaf33:/vol/<volname>/<qtreename>"
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -add \"${SHARENAME}\" \"/vol/${VOLNAME}/${SHARENAME}\" -comment \"${TARGETFILER}:/vol/${VOLNAME}/${SHARENAME}\" " >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh

#ssh nlnaf33 vfiler run nlnafving03 cifs access "<sharename>" S-1-5-11 Full Control
#ssh nlnaf33 vfiler run nlnafving03 cifs access -delete "<sharename>" everyone Full Control
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -change "<sharename>" -accessbasedenum
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -change "<sharename>" -novscanread
#ssh nlnaf33 vfiler run nlnafving03 cifs shares -change "<sharename>" -no_caching

  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs access \"${SHARENAME}\" S-1-5-11 Full Control" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs access -delete \"${SHARENAME}\" everyone Full Control" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -change \"${SHARENAME}\" -accessbasedenum" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -change \"${SHARENAME}\" -novscanread" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares -change \"${SHARENAME}\" -no_caching" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "#" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh

#ssh nlnaf33 vfiler run nlnafving03 quota on <volname>
#ssh nlnaf33 vol options <volname> fs_size_fixed off
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} quota on ${VOLNAME}" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vol options ${VOLNAME} fs_size_fixed off " >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
# Clean-up
#ssh nlnaf33 vol offline <vol>_old
  echo "${SSH} ${SRCFILER} vol offline ${VOLNAME}_new " >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "#" >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh
  echo "${SSH} ${TARGETFILER} vfiler run ${VFILER} cifs shares \"${SHARENAME}\" " >> ${BACKOUTSCRIPTS}_${SHARENAME}.sh

done  # cat ${ETC}



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

