Включение автоматических обновлений из сценария оболочки

У меня есть сценарий оболочки для автоматической настройки новых виртуальных машин Ubuntu для моих целей. Я хотел бы, чтобы этот скрипт установил и включил unattended-upgrades, но я не могу понять, как это сделать без взаимодействия с пользователем.

Обычный способ активировать обновления - dpkg-reconfigure unattended-upgrades, но, конечно, он интерактивный. Неинтерактивный внешний интерфейс вообще не задает никаких вопросов, а внешний текстовый интерфейс кажется связанным и настроенным на выполнение своих операций ввода-вывода с tty, а не с stdin / stdout.

17
задан 20 October 2012 в 08:24

5 ответов

Просто сделайте копию/etc/apt/apt.conf.d/20auto-upgrades после конфигурирования его способ, которым Вы любите и бросаете это в место на Вашей целевой машине. Вы могли встроить его в свой сценарий, или Вы могли rsync или wget это в с сервера, или что бы то ни было.

Таким образом, в основном Ваш сценарий мог бы сделать что-то вроде этого:

apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart

Нет действительно никакой причины для обезьяны с dpkg-реконфигурировать сценарием вообще.

Если Вы не хотите выбирать conf файл от удаленного сервера, это ОЧЕНЬ очень коротко и просто - версия по умолчанию, которая выбирает и устанавливает обновления системы защиты только, похожа на это:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Таким образом, можно просто повторить те строки в файл конфигурации непосредственно со следующим:

echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades
20
ответ дан 20 October 2012 в 08:24

Если вы хотите использовать dpkg-reconfigure, вы можете установить значение с помощью «debconf-set-selections», а затем перенастроить его неинтерактивным способом.

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
0
ответ дан 20 October 2012 в 08:24

По моему мнению, Вы должны написать свой собственный скрипт cron, который вызывает aptitude для этой цели, ознакомьтесь с третьей темой Напишите свой собственный скрипт cron , который вызывает aptitude в этой документации .

0
ответ дан 20 October 2012 в 08:24

Вы должны использовать sudo, чтобы эхо в /etc/apt/apt.conf.d/20auto-upgrades

if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
    sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
    sudo rm /etc/apt/apt.conf.d/20auto-upgrades
    echo "APT::Periodic::Update-Package-Lists \"1\";
    APT::Periodic::Download-Upgradeable-Packages \"1\";
    APT::Periodic::AutocleanInterval \"30\";
    APT::Periodic::Unattended-Upgrade \"1\";" | sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi
0
ответ дан 20 October 2012 в 08:24
dpkg-reconfigure -f noninteractive unattended-upgrades
0
ответ дан 17 October 2019 в 12:47

Другие вопросы по тегам:

Похожие вопросы: