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