8 votes

Comment savoir s'il y a des mises à jour disponibles?

Je gère un serveur ubuntu 12.04 LTS. Et je pense que ce serait bien si je pouvais être informé quand des mises à jour sont disponibles. Mais je ne sais pas comment savoir...

J'ai essayé de consulter la page de manuel de apt-get. À partir de là, j'ai pu utiliser apt-get -s upgrade pour obtenir la sortie de apt-get dans un script sans être bloqué par des questions.

Maintenant, je vois clairement la différence :

Mises à jour disponibles :

apt-get -s upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront mis à jour :
  dpkg dpkg-dev libdpkg-perl
3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Inst dpkg [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Conf dpkg (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Inst dpkg-dev [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all]) []
Inst libdpkg-perl [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf libdpkg-perl (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf dpkg-dev (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])

Mises à jour non disponibles :

apt-get -s upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Mais je ne sais pas comment procéder à partir de là. Comment puis-je dire, depuis un script bash (ou script php) s'il y a des mises à jour disponibles ou non ?

Modifier :

Voici mon code bash actuel. Il ne fonctionne pas.

updates_available=`/etc/update-motd.d/90-updates-available`

if [ "${updates_available}" = "0 packages can be updated. 0 updates are security updates." ];
then
   echo "Aucune mise à jour disponible"
else
   echo "Il y a des mises à jour disponibles"
fi

18voto

Todd Gamblin Points 101

Lisez les pages de l'homme pour motd(5), pam_motd(8) et update-motd(5). Sur mon système, /etc/update-motd.d/90-updates-available invoque /usr/lib/update-notifier/update-motd-updates-available qui affiche ceci lorsque je me connecte :

19 packages peuvent être mis à jour.
12 mises à jour sont des mises à jour de sécurité.

En allant un peu plus loin, le script " ... -updates-available" invoque /usr/lib/update-notifier/apt-check --human-readable. Si vous lisez cela (python), vous verrez que si vous omettez le drapeau lisible par l'homme, il affichera "19;12" sur stderr. Nous pouvons le récupérer avec ceci :

IFS=';' read updates security_updates < <(/usr/lib/update-notifier/apt-check 2>&1)
echo $updates
echo $security_updates 

19
12

Maintenant vous pouvez dire :

if (( updates == 0 )); then
    echo "Aucune mise à jour disponible"
else
    echo "Il y a des mises à jour disponibles"
fi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X