@ -1,6 +1,7 @@
#!/usr/bin/env bash
function header_info {
cat <<"EOF"
clear
cat <<"EOF"
__ __ __ __ __ _ ________
/ / / /___ ____/ /___ _/ /____ / / | | / / ____/
/ / / / __ \/ __ / __ ` / __/ _ \ / / | / /
@ -17,7 +18,6 @@ RD=$(echo "\033[01;31m")
CM = '\xE2\x9C\x94\033'
GN = $( echo "\033[1;92m" )
CL = $( echo "\033[m" )
clear
header_info
while true; do
read -p "This Will Update All LXC Containers. Proceed(y/n)?" yn
@ -29,26 +29,19 @@ while true; do
done
clear
containers = $( pct list | tail -n +2 | cut -f1 -d' ' )
function update_container( ) {
container = $1
clear
header_info
name = ` pct exec $container hostname`
name = $( pct exec " $container " hostname)
echo -e " ${ BL } [Info] ${ GN } Updating ${ BL } $container ${ CL } : ${ GN } $name ${ CL } \n "
pct config $container > temp
os = ` awk '/^ostype/' temp | cut -d' ' -f2`
if [ " $os " = = "alpine" ] ; then
pct exec $container -- ash -c "apk update && apk upgrade"
elif [ " $os " = = "ubuntu" ] || [ " $os " = = "debian" ] || [ " $os " = = "devuan" ] ; then
pct exec $container -- bash -c "apt-get update && apt-get -y upgrade"
elif [ " $os " = = "fedora" ] || [ " $os " = = "rocky" ] || [ " $os " = = "centos" ] || [ " $os " = = "alma" ] ; then
pct exec $container -- bash -c "dnf -y update && dnf -y upgrade"
elif [ " $os " = = "archlinux" ] ; then
pct exec $container -- bash -c "pacman -Syyu --noconfirm"
else
pct exec $container -- bash -c "yum -y update"
fi
os = $( pct config " $container " | awk '/^ostype/ {print $2}' )
case " $os " in
alpine) pct exec " $container " -- ash -c "apk update && apk upgrade" ; ;
archlinux) pct exec " $container " -- bash -c "pacman -Syyu --noconfirm" ; ;
fedora| rocky| centos| alma) pct exec " $container " -- bash -c "dnf -y update && dnf -y upgrade" ; ;
ubuntu| debian| devuan) pct exec " $container " -- bash -c "apt-get update && apt-get -y upgrade" ; ;
esac
}
header_info
read -p "Skip stopped containers? [y/N]" -n 1 -r
@ -58,11 +51,9 @@ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
else
skip = yes
fi
for container in $containers ; do
status = $( pct status $container )
if [ " $skip " = = "no" ] ; then
if [ " $status " = = "status: stopped" ] ; then
if [ " $skip " = = "no" ] && [ " $status " = = "status: stopped" ] ; then
echo -e " ${ BL } [Info] ${ GN } Starting ${ BL } $container ${ CL } \n "
pct start $container
echo -e " ${ BL } [Info] ${ GN } Waiting For ${ BL } $container ${ CL } ${ GN } To Start ${ CL } \n "
@ -72,16 +63,9 @@ for container in $containers; do
pct shutdown $container &
elif [ " $status " = = "status: running" ] ; then
update_container $container
fi
fi
if [ " $skip " = = "yes" ] ; then
if [ " $status " = = "status: running" ] ; then
update_container $container
fi
fi
done
wait
rm -rf temp
clear
header_info
echo -e " ${ GN } Finished, All Containers Updated. ${ CL } \n "