#!/usr/bin/perl # simple qmail logs analizer. # logs must be generated by multilog (daemontools) and tai64 aware. # daemontools must be installed on system. # $Id: qmail.pl,v 1.1.1.1 2001/05/21 15:38:58 venglin Exp $ $succ = $fail = $def = 0; %nhasz = (); %bhasz = (); while () { chomp; $i++; if (/\@[0-9a-f]+\ info msg [0-9]+\: bytes [0-9]+ from/) { $nummsg++; @arr = split(/\s/); $bytes += $arr[5]; $nhasz{$arr[7]}++; $bhasz{$arr[7]} += $arr[5]; if (!$fromdate) { $fromdate = `echo $arr[0] | /usr/local/bin/tai64nlocal`; } } if (/\@[0-9a-f]+\ delivery [0-9]+\: success/) { $succ++; } if (/\@[0-9a-f]+\ delivery [0-9]+\: failure/) { $fail++; } if (/\@[0-9a-f]+\ delivery [0-9]+\: deferral/) { $def++; } } $deliv = $def+$succ+$fail; $enddate = `echo $arr[0] | /usr/local/bin/tai64nlocal`; chomp $enddate; chomp $fromdate; print << "EOF"; [qmail--dupa--analog by venglin\@freebsd.lublin.pl] Przetworzono $i linii logów ($fromdate do $enddate) Oto raporty: Liczba wszystkich wiadomości: $nummsg Wielkość sumaryczna: $bytes Liczba rozpoczętych prób doręczenia: $deliv Liczba prób zakończonych pomyślnie: $succ Liczba prób odroczonych: $def Liczba prób zakończonych błędem: $fail Adresy wysyłające najwięcej wiadomości: EOF $i = 0; foreach $klucz (sort { $nhasz{$b} <=> $nhasz{$a} } keys %nhasz) { $i++; format STDOUT = @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> @>>>>> wiad. @>>>>>> b $klucz, $nhasz{$klucz}, $bhasz{$klucz} . write; if ($i == 10) { last; } }