Dez 26

In einem der tmux-Fenster des letzten Beitrags läuft ein tail auf das squid-access.log.
Dummerweise zeigt das tail nach einem logrotate nichts mehr an, da das Filehandle vom tail ja auf das “rotierte” log zugreift.
Fein wäre doch ein kleines Script, dass, sobald im geöffnet Filehandle nichts mehr kommt, die Datei “reopened” und dann weiter anzeigt.

Bitte sehr (Perl // Modul File::Tail vorrausgesetzt):

#!/usr/bin/perl
use File::Tail;
use Socket;
use strict;
$|=1;
my $logfile="/var/log/squid-access.log";
my $file=File::Tail->new(name=>$logfile, maxinterval=>300, adjustafter=>7);
while (defined(my $line=$file->read)) {
        my @liner=split(' ',$line,-1);
        my $host='';
        $host=gethostbyaddr(inet_aton($liner[8]), AF_INET) or $host=$liner[8];
        my @hostname=split(/./,$host); # Split FQDN at dots
        $host=$hostname[0];             # Get Lowest Domainname
        my @hosts=split(/./,$liner[8]);# Split IP at dots
        my $loctet=$hosts[3];           # Get last Octet
        printf "%s %3s %st%sn",$liner[2],$loctet,$host,$liner[12];
}
									

Das Ding zieht gleichzeitig die wichtigsten Infos aus dem Log. Nämlich den Timestamp, das letzte Octet der IP, sowie den ersten Part des Reverse-DNS-Namens.

Tagged with:
preload preload preload