1 #!/usr/bin/perl
2 #===============================================================================
3 #
4 # FILE: log-parser.pl
5 #
6 # USAGE: ./log-parser.pl
7 #
8 # DESCRIPTION:
9 #
10 # OPTIONS: ---
11 # REQUIREMENTS: ---
12 # BUGS: ---
13 # NOTES: ---
14 # AUTHOR: (), <>
15 # COMPANY:
16 # VERSION: 1.0
17 # CREATED: 13.03.2008 14:51:03 CET
18 # REVISION: ---
19 #===============================================================================
21 use strict;
22 use warnings;
23 use Getopt::Long;
25 my $log_file = "/var/log/gosa-si-server.log";
26 my $within_session = 0;
27 my $within_incoming = 0;
28 my $session;
29 my $incoming;
31 sub check_incoming {
32 my ($line) = @_ ;
33 my @line_list = split(" ", $line);
35 # new incoming msg, set all values back to default
36 if ($line =~ /INFO: Incoming msg with session ID \d+ from/ ) {
37 $within_incoming = 0;
38 }
40 if ($line =~ /INFO: Incoming msg with session ID \d+ from '$incoming'/) {
41 $within_incoming = 1;
42 return $line;
43 } else {
44 if ($within_incoming) {
45 return $line;
46 } else {
47 return;
48 }
49 }
50 }
52 sub check_session {
53 my ($line) = @_ ;
54 my @line_list = split(" ", $line);
56 if (not $line_list[4]) {
57 if ($within_session) {
58 return $line;
59 }
60 return;
61 }
63 if($line_list[4] eq $session) {
64 $within_session = 1;
65 return $line;
66 } else {
67 $within_session = 0;
68 }
69 return;
70 }
72 ### MAIN ######################################################################
74 GetOptions(
75 "s|session=s" => \$session,
76 "i|incoming=s" => \$incoming,
77 );
79 # check script pram
80 my $check_script_pram = 0;
81 if (defined $session) {
82 print "session: $session\n";
83 $check_script_pram++;
84 }
85 if (defined $incoming) {
86 print "incoming msg for mac: $incoming\n";
87 $check_script_pram++;
88 }
90 if ($check_script_pram == 0) {
91 # print usage and die
92 print "exiting script\n";
93 exit(0);
94 }
96 open(FILE, "<$log_file") or die "\t can not open log-file";
97 # Read lines
98 my $line;
99 while ($line = <FILE>){
100 chomp($line);
101 my $line2print;
102 if (defined $session && (not defined $incoming)) {
103 $line2print = &check_session($line);
105 } elsif (defined $incoming && (not defined $session)) {
106 $line2print = &check_incoming($line);
108 } elsif ((defined $incoming) && (defined $session)) {
109 my $line1 = &check_session($line);
110 my $line2 = &check_incoming($line);
111 if ((defined $line1) && (defined $line2)) {
112 $line2print = $line;
113 }
114 }
116 # printing
117 if (defined $line2print) {
118 print "$line\n";
119 }
121 }