#!/bin/bash # # vhost-stack # https://git.stack-source.com/msb/vhost-stack # MIT License Copyright (c) 2021 Matthew Saunders Brown # load include file source $(dirname $0)/vhost.sh help() { thisfilename=$(basename -- "$0") echo "Updates all existing jails." echo "" echo "usage: $thisfilename" echo "" echo " -h Print this help." echo "" echo " Cycles through all existing jails and runs jk_update" echo " for each one. This updates all software installed in" echo " the jails to match the latest versions installed on" echo " the host server. e.g. if php-cli gets update on the" echo " host this syncs that update to all the jails." exit } # check for -h if [ -n "$1" ]; then if [ $1 == "-h" ]; then help exit fi fi # make sure jails dir exists if [[ ! -e /usr/jails/ ]]; then echo "/usr/jails does not exist" exit 1 fi # check if any jails exist if [ ! "$(ls -A /usr/jails/)" ]; then echo "no jails exist" exit 1 fi # check for /usr/sbin/jk_update if [[ ! -x "/usr/sbin/jk_update" ]]; then echo "/usr/sbin/jk_update does not exist or is not executable" exit 1 fi # get list of jails cd /usr/jails/ jails=(*) for jail in "${!jails[@]}" do jail=${jails[$jail]} echo "updating $jail" /usr/sbin/jk_update -j /usr/jails/$jail /usr/sbin/jk_update -j /usr/jails/$jail /lib64/ /usr/sbin/jk_update -s /etc/passwd -s /etc/group -s /etc/ld.so.cache -j /usr/jails/$jail /etc/ /sbin/ldconfig.real -r /usr/jails/$jail done