
#!/bin/sh
#@ Maarten.Deboer@Atos.net, 120326
#= Script to cleanup broken Snapmirrors (from file-output from `ssh <old> snapmirror status | grep Broken`)
PGM="`basename $0|cut -d\. -f1`"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"

SSH="/usr/bin/ssh -n"
INFILE="/tmp/naf59-broken"

if [ ${#} -gt 0 ]; then
  INFILE="${1}"
fi
echo "Infile=${INFILE}"
sleep 1

echo "`date` ${PGM} started with ${INFILE} "|tee -a ${LOG}

cat ${INFILE} | while read SRC DST STATE
do
  echo "Source=${SRC} Dest=${DST} "
# Cleanup, non busy, snaps at source
  SRCFILER="`echo ${SRC}|cut -d\: -f1|cut -d\- -f1`"
  SRCVOL="`echo ${SRC}|cut -d\/ -f3`"
  SRCQTREE="`echo ${SRC}|cut -d\/ -f4`"
echo "SFiler=${SRCFILER} SVol=${SRCVOL} SQt=${SRCQTREE}"
  DSTFILER="`echo ${DST}|cut -d\: -f1|cut -d\- -f1`"
  DSTVOL="`echo ${DST}|cut -d\/ -f3`"
  DSTQTREE="`echo ${DST}|cut -d\/ -f4`"
echo "DFiler=${DSTFILER} DVol=${DSTVOL} DQt=${DSTQTREE}"


  SMDEST="`${SSH} ${SRCFILER} snapmirror destinations|grep ${SRCQTREE}|grep ${DSTFILER}`"
  echo "Releasing SM: ${SMDEST}"
  ${SSH} ${SRCFILER} snapmirror release ${SMDEST}

  ${SSH} ${SRCFILER} df -g ${SRCVOL}|tee -a ${LOG}
  ${SSH} ${SRCFILER} snap list ${SRCVOL}|grep ${SRCFILER}|grep ':'|grep -v busy|grep -v mirror|cut -d\: -f2|awk '{print $2}'|while read SHOT
  do
    echo "${SHOT} will be removed after 1 sec. ..."
    sleep 1
    ${SSH} ${SRCFILER} snap delete ${SRCVOL} "${SHOT}"
  done
  ${SSH} ${SRCFILER} df -g ${SRCVOL}|tee -a ${LOG}

#  ${SSH} ${DSTFILER} vol online ${DSTVOL}|tee -a ${LOG}
  ${SSH} ${DSTFILER} df -g ${DSTVOL}|tee -a ${LOG}
  ${SSH} ${DSTFILER} snap list ${DSTVOL}|grep ${DSTFILER}|grep ':'|grep -v busy|grep -v mirror|cut -d\: -f2|awk '{print $2}'|while read SHOT
##  ${SSH} ${DSTFILER} snap list ${DSTVOL}|grep common|grep ':'|grep -v busy|grep -v mirror|cut -d\: -f2|awk '{print $2}'|while read SHOT
  do
    echo "${SHOT} will be removed after 1 sec. ..."
    sleep 1
    ${SSH} ${DSTFILER} snap delete ${DSTVOL} "${SHOT}"
  done
  ${SSH} ${DSTFILER} df -g ${DSTVOL}|tee -a ${LOG}

done

echo "`date` ${PGM} finished "|tee -a ${LOG}

exit 0

