Jail mergemaster script

From TykWiki
Revision as of 14:01, 4 January 2013 by Tykling (talk | contribs) (Created page with "<pre> #! /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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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