#! /usr/bin/perl #use strict; use warnings; use Time::Local; my $infile = "D:\\Privat\\PERL Projekt\\access.log.proxy"; my $outfile = "D:\\Privat\\PERL Projekt\\auswertung.csv"; my ($ip,$date,$time); my ($d, $mon, $yy, $h, $min, $sek) = 0; my $sektime = 0; my ($gestern, $daten); my %dl; #print ("Bitte Datum von Gestern eingeben"); #print ("Beispiel: 02/Nov/2015\n"); #chomp ($gestern=); $gestern = "02/Nov/2015"; open (READLOG, "<$infile") or die ("Datei $infile nicht gefunden.\n\n"); open (WRITE, ">$outfile") or die ("Datei $outfile konnte nicht erstellt werden.\n\n"); while (){ if ($_=~m/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^\[\]]+\[\d{2}\/[a-zA-z]{3}\/\d{4}:\d{2}:\d{2}:\d{2}\s[\+|\-]\d{4}\]/) { ($ip,$date,$time) = m/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[^\[\]]+\[(\d{2}\/[a-zA-z]{3}\/\d{4})\:(\d{2}:\d{2}:\d{2})\s[\+|\-]\d{4}\]/; if ($date eq $gestern) { ($d, $mon, $yy) = split( "/", $date ); ($h, $min, $sek) = split( ":", $time ); $sektime = timelocal ($sek,$min,$h,$d,$mon,$yy); push (@{$dl{$ip}}, $sektime); #hier mach ich ein dreidimensionales Hash, die Zeitstempel werden der reihe nach pro Ip in ein Array geschrieben } } } my $i = 0; foreach $daten (sort keys %dl){ $i = ${$dl{$daten}}[-1] - ${$dl{$daten}}[0]; # hier rechne ich den letzten wert des arrays - den 1. wert $sek = $i%60; $min = (($i-$sek)/60)%60; $h = ($i-$sek-($min*60))/3600; print WRITE ("$daten;$h:$min:$sek\n"); } close (WRITE); close(READLOG);