Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Обновите все LXC одним простым скриптом.

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Обновите все LXC одним простым скриптом., Proxmox Виртуальная Среда
     
    sshanee
    Guest
    #1
    0
    06.10.2019 10:09:00
    Простой скрипт на 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
     
     
     
    mediacj
    Guest
    #2
    0
    20.01.2020 12:11:00
    Спасибо, отлично работает!
     
     
     
    iMx
    Guest
    #3
    0
    27.05.2020 08:06:00
    Просто любопытно, так как я наткнулся на это: если 'apt' заменил 'apt-get'... разве 'apt upgrade' в приведенном выше скрипте не должен быть эквивалентом ранее рекомендованного 'apt-get dist-upgrade'? То есть, скрипт должен быть 'apt full-upgrade' (предыдущее apt-get dist-upgrade), чтобы избежать проблем с зависимостями?
     
     
     
    sshanee
    Guest
    #4
    0
    28.09.2020 07:26:00
    Извини за поздний ответ, я не заметил этот комментарий. Но это за пределами моей компетенции. Я не совсем понимаю, что ты имеешь в виду, мне стоит изменить свой сценарий?
     
     
     
    Koratsuki
    Guest
    #5
    0
    27.11.2020 16:30:00
    Три строки без учета шебанга Код: #!/bin/bash

    для CT в $(pct list | grep running | awk '{print $1}'); делать
     pct exec ${CT} -- bash -c "apt update && apt dist-upgrade -y && apt clean"
    закончить
     
     
     
    sshanee
    Guest
    #6
    0
    27.11.2020 18:39:00
    Хотя я ценю изучение и улучшение кода, это не так уж и надежно. Он не запускает остановленные контейнеры и не предоставляет никакой информации. Твои три строки не могут заменить то, что делает этот скрипт.
     
     
     
    Koratsuki
    Guest
    #7
    0
    27.11.2020 19:22:00
    Ну, предполагается, что если контейнер остановлен, его не нужно обновлять или он не используется в производстве. Кстати, вот пример короткого скрипта для этой задачи, его можно улучшить и адаптировать под ваши нужды… Но спасибо, что указали на это. С уважением!
     
     
     
    amhehu
    Guest
    #8
    0
    18.08.2022 10:30:00
    Небольшое изменение, чтобы видеть имя контейнера и выполнить полное обновление: Код: #!/bin/bash
    # обновить все контейнеры

    # список идентификаторов контейнеров, по которым нужно пройтись
    containers=$(pct list | tail -n +2 | cut -f1 -d' ')

    function update_container() {
     container=$1
     name=`pct exec $container cat /etc/hostname`
     echo "[Инфо] Обновление $container : $name"
     # чтобы выполнить несколько команд в одном exec, нам нужно обернуть их в bash
     pct exec $container -- bash -c "apt update && apt upgrade -y && apt full-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
     
     
     
    LnxBil
    Guest
    #9
    0
    19.08.2022 13:42:00
    Во-первых, я бы также добавил apt clean и --purge к autoremove. Во-вторых, почему бы вам не использовать unattended или какой-либо другой инструмент автоматизации вместо того, чтобы снова изобретать велосипед? Например, unattended уже создан для этого и доступен в Debian/Ubuntu, включая выполнение этой задачи без какого-либо взаимодействия.
     
     
     
    Uruk
    Guest
    #10
    0
    05.09.2022 19:46:00
    У меня вопрос: есть ли скрипт, который может обновить все CT (Rocky, CentOS, Debian, Ubuntu и другие), а не только Debian? https://github.com/morph027/pve-lxc-scripts/blob/master/lxc-update-all https://github.com/researcx/lxd-tools (ОЧЕНЬ КРУТОЙ ИНСТРУМЕНТ) Я нашел это, но не знаю, как совместить скрипты, так что если кто-то знает, как это сделать, думаю, это поможет всем!
     
     
     
    BassT
    Guest
    #11
    0
    21.01.2023 14:39:00
    Привет всем, lxd-tools не совсем работали с proxmox. Я внедрил логирование и отслеживание выхода. Также изменил некоторые форматы. На следующем этапе я сделаю это работоспособным для всего кластера, если это возможно. Вот вам https://github.com/BassT23/LXC-Update Обновление: в версии 2.0.1 будет режим кластера.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры