[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: