1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /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;
print ("Bitte Datum von Gestern eingeben");
print ("Beispiel: 02/Nov/2015\n");
chomp ($gestern=<STDIN>);
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 (<READLOG>){
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);
print ("$ip;$sektime\n");
print WRITE ("$ip"." "."$sektime"."\n");
}
}
}
close (WRITE);
close(READLOG);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
#! /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=<STDIN>); $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 (<READLOG>){ 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);
Guest Nicoein kleines Problem habe ich noch. Wenn in einem Array nur 1 Wert steht, wie kann ich die betreffenden IPs auslassen?