######################################################## # 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 = )) { 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"; } }