Voici un fichier de trace des messages (e-mails) échangés sur serveur:
[root@hobbes] cat /var/log/maillog May 25 01:20:00 hobbes sendmail[1313]: BAA01313: from=pierre@free.fr, size=227, msgid=<200005242320.BAA01313@hobbes.watterson> May 25 01:20:00 hobbes sendmail[1313]: BAA01313: to=julien@upn.fr, ctladdr=root (0/0), delay=00:00:00, stat=Sent May 25 01:30:00 hobbes sendmail[1699]: BAA01699: from=julien@upn.fr, size=227, msgid=<200005242330.BAA01699@hobbes.watterson> May 25 01:30:00 hobbes sendmail[1699]: BAA01699: to=root@localhost, ctladdr=root (0/0), delay=00:00:00, stat=Sent ...
Le problème à résoudre est celui d'analyser un fichier de trace qui
indique la gestion des messages sur le serveur (les messages sont envoyés
vers le destinataire indiqué après la chaîne "to=
" et ceux reçus de
l'émetteur indiqué après la chaîne"from=
").
Affichez pour chaques adresses (émetteur ou destinataire) la quantitée
totale de messages envoyé, la taille totale des messages envoyés
(indiquée après la chaîne "size=
"), le nombre de messages reçut
et la taille totale des messages envoyés (indiquée dans la ligne de
réception qui a le même numéro d'identification que la ligne
concernant le message en émission).
..
#!/usr/bin/awk -f # Analyse maillog BEGIN { FS = "[ =,]+"; } / from/ { # blanc avant pour ne pas correspondre à une adresse $8 = tolower($8); # adresse en minuscule taille[$6]=$10; # mémorise la taille (toujours "from=" avant "to=") em_nb[$8]++; em_taille[$8]+=taille[$6]; } / to/ { # blanc avant pour ne pas correspondre à une adresse $8 = tolower($8); # adresse en minuscule re_nb[$8]++; re_taille[$8]+=taille[$6]; } END { for (i in em_nb) #meme identificateur pour em_nb et em_taille { print "L'émmeteur",i,"a envoyé",em_nb[i],"messages (soit",em_taille[i],"octets)"; } for (i in re_nb) #meme identificateur pour re_nb et re_taille { print "Le récepteur",i,"a recut",re_nb[i],"messages (soit",re_taille[i],"octets)"; } }..
..
Bientot.....