Простой скрипт на bash для APT обновления всех LXC контейнеров, которые находятся в состоянии остановки или работы. Запустит остановленные контейнеры для обновления, затем выключит их в фоновом режиме и перейдет к следующему контейнеру. Код: #!/bin/bash
# обновление всех контейнеров
# список идентификаторов контейнеров, которые нужно обработать
containers=$(pct list | tail -n +2 | cut -f1 -d' ')
function update_container() {
container=$1
echo "[Инфо] Обновление $container"
# чтобы выполнить несколько команд в одном exec, нам нужно обернуть их в bash
pct exec $container -- bash -c "apt update && apt upgrade -y && apt autoremove -y"
}
for container in $containers
do
status=`pct status $container`
if [ "$status" == "status: stopped" ]; then
echo [Инфо] Запускаю $container
pct start $container
echo [Инфо] Жду 5 секунд
sleep 5
update_container $container
echo [Инфо] Выключаю $container
pct shutdown $container &
elif [ "$status" == "status: running" ]; then
update_container $container
fi
done; wait
# обновление всех контейнеров
# список идентификаторов контейнеров, которые нужно обработать
containers=$(pct list | tail -n +2 | cut -f1 -d' ')
function update_container() {
container=$1
echo "[Инфо] Обновление $container"
# чтобы выполнить несколько команд в одном exec, нам нужно обернуть их в bash
pct exec $container -- bash -c "apt update && apt upgrade -y && apt autoremove -y"
}
for container in $containers
do
status=`pct status $container`
if [ "$status" == "status: stopped" ]; then
echo [Инфо] Запускаю $container
pct start $container
echo [Инфо] Жду 5 секунд
sleep 5
update_container $container
echo [Инфо] Выключаю $container
pct shutdown $container &
elif [ "$status" == "status: running" ]; then
update_container $container
fi
done; wait
