vhost-stack/bin/vhost-user-jails-update.sh
2021-09-16 16:21:35 -07:00

66 lines
1.5 KiB
Bash
Executable File

#!/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