File: filter_logs.pl

package info (click to toggle)
inetsim 1.2.7%2Bdfsg.1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,592 kB
  • sloc: perl: 13,006; sh: 265; ansic: 12; makefile: 10
file content (77 lines) | stat: -rwxr-xr-x 2,478 bytes parent folder | download | duplicates (2)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/perl -Tw
#
# filter_logs.pl - Simple script to filter service.log
#
# Copyright (c) 2008-2010 Matthias Eckert
#
# Usage:
#  cat log/service.log | contrib/filter_logs.pl > service.log.filtered
#
################################################################

use strict;
use warnings;

my %CONN = ();
my $num = 0;
my $key;
my $re;
my $line;
my $max;


my ($date, $time, $session, $service, $portproto, $cpid, $ipport, $entrytype, $content);


while ($line = <>) {
    next if (! defined ($line) || ! $line);
    if ($line =~ /\]\s\[redirect\s\d+\]\s/) {
        ($date, $time, $session, $service, $cpid, $ipport, $content) = split (/\s/, $line, 7);
        $session =~ s/.*?\[(.*?)\].*?/$1/;
        $service =~ s/.*?\[(.*?)\].*?/$1/;
        $ipport =~ s/.*?\[(.*?)\].*?/$1/;
        $cpid =~ s/.*?\[(.*?)\].*?/$1/;
        $CONN{$num}{regex} = "$session.*?$service.*?$cpid.*?$ipport";
        $num++;
    }
    else {
        ($date, $time, $session, $service, $cpid, $portproto, $ipport, $entrytype, $content) = split (/\s/, $line, 9);
        if (defined ($entrytype) && $entrytype) {
            next if ($entrytype =~ /stat:/);
            if ($entrytype !~ /(disconnect|connection)/i && $entrytype =~ /connect/) {
                $session =~ s/.*?\[(.*?)\].*?/$1/;
                $service =~ s/.*?\[(.*?)\].*?/$1/;
                $portproto =~ s/.*?\[(.*?)\].*?/$1/;
                $ipport =~ s/.*?\[(.*?)\].*?/$1/;
                $cpid =~ s/.*?\[(.*?)\].*?/$1/;
                $CONN{$num}{regex} = "$session.*?$service.*?$cpid.*?$portproto.*?$ipport";
                $num++;
            }
        }
    }
    foreach $key (keys %CONN) {
        next if (defined ($CONN{$key}{closed}) && $CONN{$key}{closed});
        $re = qr/$CONN{$key}{regex}/;
        if ($line =~ $re) {
            if ($line =~ /\]\sconnect$/ || $line =~ /\[redirect\s\d+\]/) {
                next if (defined ($CONN{$key}{opened}) && $CONN{$key}{opened});
                $CONN{$key}{opened} = 1;
            }
            if ($line =~ /\]\sdisconnect/ || $line =~ /\[redirect\s\d+\]/) {
                $CONN{$key}{closed} = 1;
            }
            $CONN{$key}{string} .= "$line";
            last;
        }
    }
}


$max = keys %CONN;
foreach $key (0..$max) {
    if (defined ($CONN{$key}) && defined ($CONN{$key}{string}) && $CONN{$key}{string}) {
        print STDOUT "$CONN{$key}{string}";
        print STDOUT "[...]\n" if (defined($CONN{$key+1}));
    }
}
exit 0;