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 78 79 80 81
|
########################################################
# Please file all bug reports, patches, and feature
# requests under:
# https://sourceforge.net/p/logwatch/_list/tickets
# Help requests and discusion can be filed under:
# https://sourceforge.net/p/logwatch/discussion/
########################################################
########################################################
# Copyright (c) 2013 Brian Masney
## Covered under the included MIT/X-Consortium License:
## http://www.opensource.org/licenses/mit-license.php
## All modifications and contributions by other persons to
## this script are assumed to have been donated to the
## Logwatch project and thus assume the above copyright
## and licensing terms. If you want to make contributions
## under your own copyright or a different license this
## must be explicitly stated in the contribution an the
## Logwatch project reserves the right to not accept such
## contributions. If you have made significant
## contributions to this script and want to claim
## copyright please contact logwatch-devel@lists.sourceforge.net.
#########################################################
use strict;
my %commands;
my %stages;
my %unknown;
while (defined(my $ThisLine = <STDIN>)) {
chomp($ThisLine);
next if $ThisLine =~ /^starting up, listening on /;
next if $ThisLine =~ /OPEN SESAME$/;
next if $ThisLine =~ /: sequence timeout /;
my ($name, $command) = $ThisLine =~ /^(.*?): running command: (.*)/;
if (defined($name)) {
$commands{"$name: $command"}++;
next;
}
my ($ip, $name, $stage) = $ThisLine =~ /^(\d+\.\d+\.\d+\.\d+): (.*?): Stage (\d+)/;
if (defined ($ip)) {
$stages{$name}{$stage}{$ip}++;
next;
}
$unknown{$ThisLine}++;
}
if (keys %stages) {
print "knockd stages reached\n";
foreach my $name (sort keys %stages) {
print "\t$name\n";
foreach my $stage (sort keys %{$stages{$name}}) {
print "\t\tStage $stage\n";
foreach my $ip (sort keys %{$stages{$name}{$stage}}) {
print "\t\t\tFrom $ip: " . $stages{$name}{$stage}{$ip} . " time(s)\n";
}
}
}
}
if (keys %commands) {
print "\n";
print "knockd commands executed\n";
foreach my $command (sort keys %commands) {
print "\t" . $commands{$command} . " time(s): $command\n";
}
}
if (keys %unknown) {
print "\n";
print "knockd unknown log entries\n";
foreach my $line (sort keys %unknown) {
print "\t" . $unknown{$line} . " time(s): $line\n";
}
}
|