| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #!/bin/sh
- # Update freebsd base of all running jails
- #
- # one has first to create the suitable configuration file
- # by default /usr/local/etc/jail-update.conf
- # or pass it as the first argument
- #
- #
- FAILURE() {
- echo ${*}
- exit 1
- }
- usage() {
- echo 'Usage: ...'
- echo -e '-c\tconfiguration file'
- echo -e '\t\tdefault to /usr/local/etc/jail-update.conf'
- echo -e '-j\tjail list'
- echo -e '\t\tdefault to all running jails'
- echo -e '-u\tthis message'
- echo '-------------------------------------------------'
- }
- parse() {
- RED='\033[0;31m'
- NC='\033[0m' # No Color
- while getopts "cur:j:" option
- do
- case ${option} in
- c)
- CONF=${OPTARG}
- ;;
- r) TOREV=${OPTARG}
- ;;
- j) J=${OPTARG}
- ;;
- *)
- usage
- exit 0
- ;;
- esac
- done
- }
- export PAGER=/bin/cat
- # default parameters
- CONF=/usr/local/etc/jail-update.conf
- # get currently running names (or jids) list
- parse ${*}
- [ -z "${J}" ] && echo 'no jail to check.exiting.' && exit 0
- [ ! -r "${CONF}" ] && echo 'no configuration file for updating.exiting.' && exit 1
- echo ''
- echo 'Ready to update jail(s) <'${J}'> to '${TOREV}', according to the <'${CONF}'> configuration.'
- echo ''
- # jail path
- JPATH=`jls -j ${J} path 2>/dev/null`
- if [ -n "${JPATH}" ]; then
- echo '[ :: ' $J ' ::]'
- # freebsd version this jail is running
- JVERSION=`jexec ${J} freebsd-version -u`
- if [ -n "${JVERSION}" ]; then
- echo 'Updating <'${J}'> from version <'${JVERSION}'>, path <'${JPATH}'>.'
- jail -r ${J} || echo skipping
- freebsd-update -f ${CONF} --currently-running ${JVERSION} -b ${JPATH} -r ${TOREV} upgrade || FAILURE upgrade failed
- freebsd-update -f ${CONF} -b ${JPATH} install || FAILURE install
- jail -c ${J}
- freebsd-update -f ${CONF} -b ${JPATH} install || FAILURE install
- jail -r ${J}
- jail -c ${J}
- pkg -j ${J} bootstrap -f
- pkg -j ${J} update
- pkg -j ${J} upgrade -f
- else
- echo 'Unable to get jail <'${J}'> path.Skipping'
- fi
- else
- echo 'Jail <'${J}'> unavailable.Skipping.'
- fi
|