Dan is hier her proggie compleet als text file bij gevoegd.
Ook heb ik een kleine fout er uit gehaald.
Biglog en smalllog waren verkeerd geplaatst.
#!/usr/bin/perl
#
# Dit script comprimeert pproxy log files tot 1 regel per ip-range per dag.
# Ondertussen doet het wat zoek- en vervang werk, waardoor hele ip-ranges onder een vaste
# naam in je ppstats terecht komen.
#
# 5 dingen die je in kan/moet stellen:
#
# 1:
# In de ppstats-rc5.ini:
# de regel: LogPre = "pinproxyrc5" # For rc5pkeyYYYYMMDD
# zetten (die staat er al, alleen ff pinproxy ipv pproxy).
# Zorg ervoor dat hieronder de paden bij de regels $biglog en $smallog kloppen!
#
# 2:
# In je ppstats-rc5.ini:
# CacheDays = 500 # Days to store cache before refreshing.
# Dan probeert ie niet steeds 10.1.x.x op te zoeken
#
# 3: In de ppstats-rc5.ini het consolidate UIT zetten
# ConsHosts = 0 # Do not consolidate hosts.
# #ConsHosts = 1 # Consolidate hosts.
#
# 4:
# Zie hieronder, bij: "Vul hieronder zelf de ip-ranges aan."
#
# 5:
# Zie hieronder bij: "Wil je oude logs doen?"
#
#succes!
sub nice_time
{
my @gmt = gmtime(shift @_);
my $i;
$gmt[4]++;
$gmt[5] += 1900;
for ($i = 0; $i < 5; $i++) {
while (length($gmt[$i]) < 2) {
$gmt[$i] = "0" . $gmt[$i];
}
}
return ($gmt[0], $gmt[1], $gmt[2], $gmt[3], $gmt[4], $gmt[5], $gmt[6]);
}
( $sec, $min, $hour, $mday, $month, $year, $wday) = nice_time(time);
# Wil je oude logs doen? zet een hekje voor de bovenste $logdate
# en haal het bij de onderste weg, en vul de juiste datum in.
# Bij "normale" werking moet het staan zoals nu.
# draai het script vervolgens zelf voor elke logfile die je wil doen
# (wel steeds datum aanpassen ofcourse)
$logdate = "$year$month$mday";
#$logdate = 20001012;
undef %full;
undef %final;
$smallog = "e:/proxy/pproxyrc5" . $logdate . ".log";
$biglog = "e:/proxy/pinproxyrc5" . $logdate . ".log";
open (LEES, '<'."$biglog");
while (defined($entry = <LEES>)) {
chomp($entry);
$entry =~ tr/A-Z/a-z/;
($datetime, $ipaddr, $email, $block, $nkeys, $os, $cpu, $ver, $space) = split(/,/, $entry);
# Vul hieronder zelf de ip-ranges aan.
# bijv: 195.121.x.x (WXS) wordt vervangen door 10.1.1.3
# in de rc5-dns.cache vul ik in:
# 10.1.1.3,NAAM_VAN_DE_GOZERT_DIE_WXS_GERUIKT,2000/09/14
# 10.1.1.4,NAAM_VAN_DE_GOZERT_DIE_WANNADOO_GERUIKT,2000/09/14
# hele adressen mogen ook, als je maar een \ voor de punt zet. (bv 212\.195\.23\.128)
$ipaddr =~ s/^213\.75..+/10.1.1.1/; #peter en ingrid
$ipaddr =~ s/^195\.241\.187.+/10.1.1.2/; #twan TIP/wol
$ipaddr =~ s/^195\.241\.188.+/10.1.1.2/; #twan TIP/wol
$ipaddr =~ s/^222\.222\.222\.222+/10.1.1.2/; #twan
$ipaddr =~ s/^213\.116\..+/10.1.1.3/; #henry uu.net
$ipaddr =~ s/^212\.136\.242.+/10.1.1.3/; #henry uu.net
$ipaddr =~ s/^212\.153\.223.+/10.1.1.3/; #henry uu.net
$ipaddr =~ s/^195\.121\.156.+/10.1.1.3/; #henry uu.net
$ipaddr =~ s/^1\.1\.1\.1+/10.1.1.4/; #wim
$ipaddr =~ s/^2\.2\.2\.2+/10.1.1.5/; #ouwe koe
$ipaddr =~ s/^33\.33\.33\.33+/10.1.1.6/; #dnb
$ipaddr =~ s/^111\.111\.111\.111+/10.1.1.7/; #jvd
$ipaddr =~ s/^195\.241\.195.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.199.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.216.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.219.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.222.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.225.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.227.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.228.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.230.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.232.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.233.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.239.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.241\.246.+/10.1.1.7/; #jvd WOL
$ipaddr =~ s/^195\.121\.35.+/10.1.1.8/; #Bloemen corso
# $ipaddr =~ s/^194\.134\..+/10.1.1.8/; #voorbeeld
$main="$email,$ipaddr,$os,$cpu,$ver";
if (defined($full{$main})) {
$full{$main} += "$nkeys";
$full{$main}{$main} = "$datetime,$block"; }
else {
$full{$main} = "$nkeys";
$full{$main}{$main} = "$datetime,$block"; }
}
close LEES;
if (defined(%full)) {
foreach $main (keys %full) {
($email, $ipaddr, $os, $cpu, $ver, $space) = split(/,/, $main);
($datetime, $block) = split(/,/, $full{$main}{$main});
$final{"$datetime,$ipaddr,$email,$block,$full{$main},$os,$cpu,$ver"} = 0;
}
open (SCHR, '>'."$smallog");
foreach $main (sort (keys %final)) { print SCHR "$main\n"; }
close SCHR; }
____________________________________
Gebruik nu maar de knip en plak optie om die tekst hier boven in een tekstverwerker te stoppen en save hem als striplog.pl
En hierbij dank ik de maker voor dit programma.
Oja, zorch er wel voor dat je pjuter de datum weergeeft als 2000 10 13 dus yyyymmdd anders heeft het programma een probleempje.