Envoyer les messages debug a root par mail

Salut

  • J’ai créé un compte local dans Thunderbird pour lire les mails de root

  • J’ai paramètré apt pour mettre le niveau de debug à 2

  • Quand je lance le script en commande ça produit bien du résultat

# exec  /usr/lib/apt/apt.systemd.daily&
[1] 8406
root@debian:/# verbose level 2
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
check_stamp: interval=86400, now=1498082400, stamp=1498082400, delta=86400 (sec)
Atteint:1 http://ppa.launchpad.net/tsbarnes/indicator-keylock/ubuntu xenial InRelease
Atteint:2 http://security.debian.org/debian-security jessie/updates InRelease                                                      
Atteint:3 http://archive.canonical.com xenial InRelease                                                                            
Ign:4 http://dl.google.com/linux/chrome/deb stable InRelease                                                                       
Atteint:5 http://ftp.uk.debian.org/debian buster InRelease                                                                         
Atteint:6 http://security.debian.org/debian-security stretch/updates InRelease                                                     
Atteint:7 http://dl.google.com/linux/chrome/deb stable Release                                                                     
Atteint:8 http://ftp.uk.debian.org/debian buster-updates InRelease                                                                 
Atteint:9 http://security.debian.org/debian-security buster/updates InRelease                    
Ign:10 http://ftp.uk.debian.org/debian stretch InRelease                                         
Atteint:11 http://ftp.uk.debian.org/debian stretch-updates InRelease
Ign:12 http://ftp.uk.debian.org/debian jessie InRelease        
Atteint:13 http://ftp.uk.debian.org/debian jessie-updates InRelease
Atteint:14 http://ftp.uk.debian.org/debian stretch Release     
Atteint:15 http://ftp.uk.debian.org/debian jessie Release      
Atteint:16 https://dl.winehq.org/wine-builds/debian stretch InRelease
Lecture des listes de paquets... Fait
download updated metadata (success).
send dbus signal (success)
check_stamp: interval=86400, now=1498082400, stamp=1498082400, delta=86400 (sec)
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
download upgradable (success)
unattended-upgrade -d (not run)
check_stamp: interval=0
unattended-upgrade (not run)
check_stamp: interval=0
clean (not run)
check_stamp: interval=86400, now=1498082400, stamp=1498082400, delta=86400 (sec)
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
autoclean (success).
aged: ctime <30 and mtime <30 and ctime>2 and mtime>2
end remove by archive size: size=245948 < 512000

[1]+  Fini                    exec /usr/lib/apt/apt.systemd.daily
  • Je sais envoyer un mail à root, j’ai ajouté cette ligne en fin du script /usr/lib/apt/apt.systemd.daily:

echo "/apt.systemd.daily ok" | mail -s "apt.systemd.daily" root@localhost.localdomain

que je recupère bien dans Thunderbird

  • Mais comment faire pour que les compte-rendu debug soit dans le mail?

Regarde du côté de l’option de configuration APT::Periodic::Verbose, documentée dans /usr/lib/apt/apt.systemd.daily et à définir dans /etc/apt/apt.conf.d/10periodic

root@debian:/# apt-config dump | grep APT::Periodic
APT::Periodic "";
APT::Periodic::Enable "1";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::Verbose "2";
APT::Periodic::RandomSleep "15";
APT::Periodic::MaxAge "30";
APT::Periodic::MinAge "2";
APT::Periodic::MaxSize "500";
APT::Periodic::Unattended-Upgrade "0";

c’est ce que j’ai mis à 2 pour avoir les compte-rendu debug, mail il n’y a pas de notion de mail dans les options

je pense qu’il faut que je modifie la commande mail pour qu’elle récupère les textes debug mais je sais pas faire

Et voilà, merci google pour trouver des exemples et les man des commandes, ça marche avec deux modifications du script /usr/lib/apt/apt.systemd.daily

  • Modification de la redirection des erreurs dans un fichier dans la procédure debug_echo
debug_echo()
{
    # Display message if $VERBOSE >= 1
    if [ "$VERBOSE" -ge 1 ]; then
	echo $1 1>&2
	echo $1 >> "/tmp/resul-apt-daily.txt"
    fi
}
  • Envoi d’un mail a root avec le contenu du fichier et suppression de celui-ci en fin du script qui devient ça:
# envoi d'un mail
mail -s "apt.systemd.daily" root@localhost.localdomain < "/tmp/resul-apt-daily.txt"
rm "/tmp/resul-apt-daily.txt"
#
#     vim: set sts=4 ai :
#

Maintenant je verrai demain si c’est ok quand le script /usr/lib/apt/apt.systemd.daily est lancé automatiquement au 1er boot

petite gâterie :grinning:

Pour avoir la liste des paquets pouvant être mis à jour dans le mail, jai modifié la partie update package lists

    # update package lists
    UPDATED=0
    UPDATE_STAMP=/var/lib/apt/periodic/update-stamp
    if check_stamp $UPDATE_STAMP $UpdateInterval; then
	if eval apt-get $XAPTOPT -y update $XSTDERR; then
	    debug_echo "download updated metadata (success)."
	    if which dbus-send >/dev/null 2>&1 && pidof dbus-daemon >/dev/null 2>&1; then
		if dbus-send --system / app.apt.dbus.updated boolean:true ; then
		    debug_echo "send dbus signal (success)"
		else
		    debug_echo "send dbus signal (error)"
		fi
	    else
		debug_echo "dbus signal not send (command not available)"
	    fi
	    update_stamp $UPDATE_STAMP
	    UPDATED=1
	    echo '*************************************' >> "/tmp/resul-apt-daily.txt"
	    apt list --upgradable >> "/tmp/resul-apt-daily.txt"	
            echo '*************************************' >> "/tmp/resul-apt-daily.txt"
	else
	    debug_echo "download updated metadata (error)"
	fi
    else
	debug_echo "download updated metadata (not run)."
    fi

pas besoin de bidouiller, une tache anacron envoi un mail