J'utilise un serveur Ubuntu 12.04 LTS. Et je pense que ce serait bien si je pouvais être informé des mises à jour disponibles. Mais je ne trouve pas comment savoir ...
J'ai essayé de regarder la page de manuel apt-get
. J'ai pu utiliser apt-get -s upgrade
pour obtenir la sortie d'apt-get dans un script sans bloquer les questions.
Maintenant, je vois clairement la différence:
Les mises à jour sont disponibles:
apt-get -s upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
dpkg dpkg-dev libdpkg-Perl
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
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])
Les mises à jour ne sont pas disponibles:
apt-get -s upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Mais je ne sais pas comment procéder à partir de là. Comment puis-je savoir, à partir d'un script bash (ou script php), que des mises à jour sont disponibles ou non?
Modifier :
Voici mon code bash actuel. Cela 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 "No updates are available"
else
echo "There are updates available"
fi
Lisez les pages de manuel relatives à motd(5)
, pam_motd(8)
et update-motd(5)
. Sur mon système, /etc/update-motd.d/90-updates-available
appelle /usr/lib/update-notifier/update-motd-updates-available
qui l’affiche lorsque je me connecte:
19 packages can be updated.
12 updates are security updates.
En approfondissant un peu, le script "...-updates-available" appelle /usr/lib/update-notifier/apt-check --human-readable
. Si vous lisez cela (python), vous verrez que si vous omettez l'indicateur lisible par l'homme, il produira "19; 12" dans stderr. Nous pouvons saisir cela 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 "No updates are available"
else
echo "There are updates available"
fi