#!/usr/pkg/bin/perl # 1. Symlinks auf die Logfiles von heute anlegen # 2. Logfiles von gestern parsen und gekürzt im stats-Verzeichnis ablegen # 3. Logfiles komprimieren # Datum von gestern und heute im passenden Format ermitteln use POSIX; ($sec, $min, $hour, $mday, $mon, $year) = gmtime; $gestern = strftime('%Y%m%d', ($sec, $min, $hour, $mday-1, $mon, $year)); $logdatum = strftime('%Y-%m-%d', ($sec, $min, $hour, $mday-1, $mon, $year)); $heute = strftime('%Y%m%d', ($sec, $min, $hour, $mday , $mon, $year)); # Verzeichnisse und Contests $logs = "/var/log/dnet"; # Proxylogs (roh) $stats = "$logs/stats"; # Proxylogs (gekürzt) @contests = ('rc5', 'ogr'); # Wettbewerbe $HOME = $ENV{'HOME'}; # /home/dnet foreach $typ (@contests) { # Filenamen von gestern und heute $alt = "pproxy$typ$gestern.log"; $neu = "pproxy$typ$heute.log"; # stats-Link auf das neue Logfile anlegen symlink "../$neu", "$stats/$neu"; # alten $HOME-Link löschen und auf das neue Logfile anlegen unlink "$HOME/stats/$typ.log"; symlink "$logs/$neu", "$HOME/stats/$typ.log"; # Logfile von gestern einlesen undef %summe; undef %zuletzt; open (IN, "<$logs/$alt"); while () { chomp; @F = split(","); if ($typ eq 'ogr') { ($ogr) = ($F[3] =~ /^(\d\d)\//); $key = "$F[1],$F[2],$F[5],$F[6],$F[7],$ogr"; } else { $key = "$F[1],$F[2],$F[5],$F[6],$F[7]"; } $summe{$key} += $F[4]; ($zeit) = ($F[0] =~ /(..:..:..)/); $zuletzt{$key} = $zeit; } close IN; # Link von gestern löschen unlink "$stats/$alt"; # und durch gekürztes Logfile von gestern ersetzen open (OUT, ">$stats/$alt"); foreach $key (keys %summe) { @F = split(",", $key); if ($typ eq 'ogr') { $block = "$F[5]/1-2-3-4"; } else { $block = "1111111100000000"; } print OUT "$logdatum $zuletzt{$key},$F[0],$F[1],$block,$summe{$key},$F[2],$F[3],$F[4]\n"; } close OUT; # gekürztes und Original-Logfile von gestern gzippen system("/usr/bin/gzip -9 $stats/$alt"); system("/usr/bin/gzip -9 $logs/$alt"); } exit 0;