Re: update-notifier pour la ligne de commande
Le dimanche 10 août 2008 18:37, Grégory BULOT a écrit :
> bonjour,
>
> existe-t-il un update-notifier pour la ligne de commande ?
>
> mon idée est de recevoir un mail de mon serveur lorsqu'il y a
> uniquement des maj disponible (un aptitude upgrade est trop bavard)
> je m'oriente donc vers cron-apt, mais comme j'ai pas de maj en attente
> je sais pas si cela fonctionne ....
> - je ne veux pas de lancement de maj, juste la liste des maj dispo par
> mail, lorsqu'il y en a (je veux pas de mail me disant 'pas de maj dispos')
Bonjour,
Je ne sais ce qui existe au juste mais ce n'est pas bien compliqué à faire
soit même. Ci-dessous, voici un script bash que j'utilise à cette fin. Il
*faut* l'adapter à ton cas, au moins changer l'adresse dans les variables.
C'est loin d'être parfait. Notamment parce que le test que je fais pour
déterminer s'il y a des mises à jour compte le nombre de lignes de sorties
d'aptitude et que ce nombre change d'une version à l'autre donc le script
doit être adapter à chaque nouvelle version de Debian. Pour le moment il
fonctionne avec Etch.
Bon, ça reste très modeste.
S'il y a des propositions pour l'améliorer...
[Début du script : attention aux sauts de lignes indésirés]
#!/bin/bash
#
# Ce script utilise aptitude pour vérifier l'existence de mises à jour et
envoie
# un mail si c'est le cas.
# Il est adapté d'un script trouvé sur le net.
# Ce script doit être lancé par root pour fonctionner : idéalement via
cron/anacron.
# Il est nécessaire que la commande mail soit disponible.
#
# Note : il existe le paquet cron-apt qui doit faire quelque chose de
semblable
# (voire mieux) ainsi que des applications qui informent dans le dock (comme
# adept-notifier).
# VARIABLES
adresse=eddy # adresse email où envoyer l'avertissement
machine=`hostname` # nom de la machine où une mise à jour existe
resultat="" # pour tester l'existence d'une mise à jour
resultat2="" # pour tester l'existence d'une adresse IP
nbretest=10 # nbre de lignes de la réponse de la commande upgrade
# au-delà duquel il y a des mises à jour
depot=security.debian.org # adresse à pinger pour voir si réseau ok
# Avant de regarder s'il y a des mises à jour, on va regarder si
# on a accès au net en pingant les dépôts
resultat2=`ping -c 1 $depot 2>&1 | grep unknown`
# MISE À JOUR DE LA LISTE DES PAQUETS ET RECHERCHE DE MISE À JOUR
if [ -z "$resultat2" ]
then
aptitude update &> /dev/null
# on va tester la présence de mise à jour ; il faut faire attention
anacron
# travaille en anglais quand lancé par le système mais en français
quand
# lancé par moi via sudo ; il faut imaginer un test NON SENSIBLE À LA
LANGUE
# (au début je faisais un grep sur le contenu de la commande aptitude,
je l'ai
# remplacé par le comptage des lignes rendu par aptitude).
resultat=`aptitude -sy upgrade | wc -l `
else
(
echo "Le programme de notification a été exécuté par cron/anacron et
n'a"
echo "pu détecter aucune mise à jour pour $machine faute d'avoir
accès"
echo "au réseau."
echo
echo "--"
echo Tux
) | mail -a "content-type: text/plain;
charset=utf-8" -s "=?UTF-8?Q?=C3=89chec_de_recherche_de_mise_=C3=A0_jour_pour_$machine?="
$adresse
fi
if [ -n "$resultat" ]
then
if [ "$resultat" -gt "$nbretest" ]
then
(
echo "Des nouvelles mises à jour sont disponibles pour
$machine ."
echo
echo "Voici une simulation du résultat de la commande de mise
à jour :"
echo
echo "—————————————————————————————————————————————————————————————————"
aptitude -sy upgrade
echo "—————————————————————————————————————————————————————————————————"
echo
echo "Il suffit de taper la commande"
echo "maj"
echo "dans un terminal pour mettre le système à jour."
echo
echo "--"
echo Tux
) | mail -a "content-type: text/plain;
charset=utf-8" -s "=?UTF-8?Q?Des_mises_=C3=A0_jour_sont_disponibles_sur_$machine?="
$adresse
fi
fi
[Fin du script]
--
Strange Fruit
Reply to: