Habilitar actualizaciones desatendidas desde un script de shell

Tengo un script de shell para configurar automáticamente nuevas máquinas virtuales de Ubuntu para mis propósitos. Me gustaría que este script se instale y habilite unattended-upgrades , pero no puedo descubrir cómo hacerlo sin la interacción del usuario.

La forma habitual de habilitar las actualizaciones es dpkg-reconfigure unattended-upgrades , pero por supuesto que es interactivo. El front-end no interactivo evita hacer preguntas, y el front-end de texto parece limitado y determinado a hacer su E / S con el tty y no con stdin / stdout.

Simplemente haga una copia de /etc/apt/apt.conf.d/20auto-upgrades después de configurarlo como desee y colóquelo en su máquina de destino. Podría incrustarlo en su script, o podría rsync o wget desde un servidor, o lo que sea.

Así que básicamente tu script podría hacer algo como esto:

 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 

Realmente no hay ninguna razón para simular con el script dpkg-reconfigure.

Si no desea obtener el archivo conf desde un servidor remoto, es MUY breve y simple: la versión predeterminada, que solo recupera e instala las actualizaciones de seguridad, tiene este aspecto:

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

Por lo tanto, solo puede repetir esas líneas en el archivo de configuración directamente con lo siguiente:

 echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades 

Si desea usar dpkg-reconfigure, puede establecer el valor con “debconf-set-selections”, y luego reconfigurarlo de una manera no interactiva.

 echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades 

En mi opinión, tiene que escribir su propio script cron que llame a aptitude para este propósito. Revise el tercer tema. Escriba su propio script cron que llame a aptitude en esta documentación .

Tienes que usar sudo para hacer eco en /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