J'ai environ 7 serveurs Debian que je gère et je voudrais les configurer pour qu'ils se mettent à jour automatiquement. J'ai donc créé un script en tant que tel:
#!/bin/sh
apt-get update
apt-get upgrade
et l'a placé sur la liste crontab de root
. Malheureusement, il se bloque toujours sur la section Mise à niveau, demandant si je suis sûr que je veux mettre à niveau. Parce que c'est un travail cron, je ne vois pas la sortie jusqu'à ce qu'il m'envoie un e-mail disant qu'il a échoué. Existe-t-il un moyen de lui faire sauter cette invite et de faire la mise à niveau automatiquement?
Utilisez l'option -y pour apt-get de ne pas demander. De man apt-get
:
-y, --yes, --assume-yes
Automatic yes to prompts; assume "yes" as answer to all prompts and
run non-interactively. If an undesirable situation, such as
changing a held package, trying to install a unauthenticated
package or removing an essential package occurs then apt-get will
abort. Configuration Item: APT::Get::Assume-Yes.
Vous pouvez également définir la variable env DEBIAN_FRONTEND
DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
Eh bien, vous utilisez peut-être le mauvais outil. unattended-upgrades
le package installe les mises à jour de sécurité quotidiennement (peut être configuré), vous pouvez configurer les packages à mettre à niveau ou non, etc. Peut être installé à l'aide de:
Sudo apt-get install unattended-upgrades
De man unattended-upgrades
:
La configuration se fait via le mécanisme de configuration apt. Le fichier de configuration par défaut se trouve dans /etc/apt/apt.conf.d/50unattended-upgrades
bien que les réponses précédentes soient informatives, elles ne contournent pas le "problème" de saisie requis par les moyens humains pendant upgrade
. par conséquent, j'utilise les éléments suivants:
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
Sudo -E apt-get -qy update
Sudo -E apt-get -qy -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
Sudo -E apt-get -qy autoclean
pour inclure les mises à niveau de "distribution" comme les noyaux, utilisez le dist-upgrade
commande.
veuillez consulter le manpgage de dpkg
pour des informations détaillées sur ces paramètres.
note d'importation : appel de Sudo
y compris -E
le paramètre est requis:
Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.
sinon, les instructions EXPORT
n'affecteront pas les appels de apt-get
!
le crédit revient à Remy van Elst ! Merci!
Un outil générique pour ce genre de chose est yes
:
DESCRIPTION
Repeatedly output a line with all specified STRING(s), or 'y'.
Ainsi, par exemple, vous pourriez faire
yes | Sudo apt-get upgrade
Veuillez noter que dans le cas spécifique de apt-get upgrade
utiliser les options suggérées par @ Braiam ou @ ArthurUlfeldt est préférable.