Code

256c310f232a0dd13d10d51b1e6c6b5d99ab0a2e
[gosa.git] / gosa-si / tests / log-parser.pl
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);
55         
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);
104                 
105         } elsif (defined $incoming && (not defined $session)) {
106                 $line2print = &check_incoming($line);
107                 
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         }
120