Script de surveillance des Mises à Jour

Salut,
Je suis tombé sur un petit script très utile pour prévenir des mises à jours: blog.brachium-system.net/archive … -mail.html

#!/bin/sh
#Copyright: Jonas Genannt jonas.genannt (AT) capi2name.de
#License: GPL

MAIL_CMD="/usr/bin/mail"
EMAIL_ADDR="admin@karmaweb.biz"
TMPNAME="`mktemp`"

IPADDR="`LC_ALL='en' /sbin/ifconfig eth0 | sed -n -e'/inet addr:/s/^.*inet addr:\([0-9.]*\).*$/\1/p'`"

if [ -z ${IPADDR} ]; then
IPADDR="`LC_ALL='en' /sbin/ifconfig eth0:1 | sed -n -e'/inet addr:/s/^.*inet addr:\([0-9.]*\).*$/\1/p'`"
fi

if [ -z ${IPADDR} ]; then
IPADDR=`/bin/hostname -f`
fi

apt-get update > /dev/null

if [ `apt-get --just-print upgrade | grep -c -E "^Inst"` -gt "0" ]; then

echo -e "apt-get upgrade voudrait mettre à jour les paquets suivants:\n" >> ${TMPNAME}
# Choisir entre les deux options suivantes:
#`apt-get --just-print -u upgrade | grep "^Inst " | awk '{print$2}' >> ${TMPNAME}` # Description courte
`apt-get update >/dev/null; apt-get --simulate --quiet=2 upgrade >> ${TMPNAME}` # Description plus complète
echo -e "\n-------------------------------------\nMises à jour de Sécurité, vous connaissez la musique..." >> ${TMPNAME}
${MAIL_CMD} -s "Mise(s) à jour en attente sur ${IPADDR}" ${EMAIL_ADDR} < ${TMPNAME}
rm -f ${TMPNAME}
fi

Voici ce qu’il sort (c’est sur une Sid…)

Ricardo va me dire qu’il en a un plus simple qui fonctionne (et c’est vrai…). Mais chez mois il produit un effet indésirable: Il m’envoie un mail vide lorsqu’il n’y a pas de MAJ… Je le met quand même…

#!/bin/sh
apt-get update >/dev/null; apt-get --simulate --quiet=2 upgrade | mail -e -s "MAJ sur SERVEUR" nom@serveur.xxx

man mail m’indique:

-E et pas de -e , peut-être est-ce là le “bug” ?

non, voici le copié/collé du mien qui n’envoie que lorsqu’il y a MAJ à effectuer :

ricardo@serveur:~$ cat /usr/local/bin/cronMAJ
#!/bin/sh
apt-get update >/dev/null; apt-get --simulate --quiet=2 upgrade | mail -e -s "MAJ sur SERVEUR" ricardo@rictux.fr

les droits qui vont avec la ligne :

-rwxr-xr-x  1 root staff  124  8 févr.  2011 cronMAJ

et le /etc/crontab qui va avec, toujours en copié/collé

# pour etre prevenu des MAJ
01 12  * * *  root   /usr/local/bin/cronMAJ

Est-ce qu’il n’existe pas un moyen plus propre de faire cela ? Par exemple récupérer un code du programme, genre 0 = pas de mise à jour, sinon mises à jour disponibles. L’idée est d’avoir quelque chose d’universel quelle que soit la langue et qui soit également évolutif.

Salut,
J’ai corrigé une erreur dans une option de send-mail, et traduit en français (ça fait pas de mal…).

Salut,

Pour que ce script soit “complet” pourrais tu nous ajouter le nom du serveur mail à installer :blush:

:laughing:

Au choix, Exim ou Postfix…
Il faut évidemment que l’envoie des mails par la machine soit configuré…

comme de toute façon j’acceptai toujours toutes les mises à jour, je me suis fait mon script lancé au boot par un service Systemd

Pourquoi réinventer la roue ?
apticron + apt-listchanges font parfaitement le travail.

1 J'aime

j’ai même créé une alternative “maj” pour lancer mon script comme une commande :rofl: