Jail mergemaster script
From TykWiki
Jump to navigationJump to search
#! /bin/sh
if [ ! -e /usr/local/bin/pcregrep ]; then
echo "$(basename $0) requires pcregrep"
exit 2
fi
MM_RC=0
if [ -e /root/.mergemasterrc ]; then
MM_RC=1
mv /root/.mergemasterrc /root/.mergemasterrc.old
fi
for jailroot in $(jls -n | pcregrep -o1 "path=(\S+)"); do
if [ -n "${jailroot}" -a -d "${jailroot}" ]; then
echo "processing ${jailroot}:"
cat <<EOF > /root/.mergemasterrc
AUTO_INSTALL=yes
AUTO_UPGRADE=yes
FREEBSD_ID=yes
PRESERVE_FILES=yes
PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-$(basename ${jailroot})-$(date +%y%m%d-%H%M%S)
IGNORE_FILES="/boot/device.hints /etc/motd"
EOF
if [ -d "${jailroot}/etc.bak" ]; then
rm -rfI "${jailroot}/etc.bak"
fi
cp -pRP "${jailroot}/etc" "${jailroot}/etc.bak"
if [ ! -e ${jailroot}/var/db/mergemaster.mtree ]; then
rm -rfI ${jailroot}/etc/rc.d/*
fi
mergemaster -D "${jailroot}"
else
echo "${jailroot} doesn't exist"
fi
sleep 2
done
if [ ${MM_RC} -eq 1 ]; then
mv /root/.mergemasterrc.old /root/.mergemasterrc
else
rm /root/.mergemasterrc
fi