从 shell 脚本启用无人值守升级

Gra*_*son 18 upgrade server dpkg scripts

我有一个 shell 脚本可以根据我的目的自动配置新的 Ubuntu 虚拟机。我希望安装并启用此脚本unattended-upgrades,但如果没有用户交互,我无法弄清楚如何执行此操作。

启用升级的常用方法是dpkg-reconfigure unattended-upgrades,但当然这是交互式的。非交互式前端完全避免提出任何问题,文本前端似乎绑定并决心使用 tty 而不是 stdin/stdout 执行其 I/O。

Jim*_*ter 20

只需按照您喜欢的方式配置后复制 /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
Run Code Online (Sandbox Code Playgroud)

根本没有理由使用 dpkg-reconfigure 脚本。

如果您不想从远程服务器获取 conf 文件,它非常简短且简单——默认版本仅获取和安装安全更新,如下所示:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Run Code Online (Sandbox Code Playgroud)

因此,您可以直接使用以下内容将这些行回显到配置文件中:

echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades
Run Code Online (Sandbox Code Playgroud)


KK *_*tel 0

我建议插入配置参数来配置无人值守升级。

sudo touch /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Update-Package-Lists "1"" >> /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Unattended-Upgrade "1" " >> /etc/apt/apt.conf.d/20auto-upgrades
Run Code Online (Sandbox Code Playgroud)

同样,您可以根据您的要求在conf文件中配置/添加参数 /etc/apt/apt.conf.d/50unattended-upgrades

不要忘记重新启动服务以应用更改。

/etc/init.d/unattended-upgrades restart
Run Code Online (Sandbox Code Playgroud)