66 lines
1.5 KiB
Text
66 lines
1.5 KiB
Text
|
#!/usr/bin/perl -w
|
||
|
#
|
||
|
# Logwatch script for hostapd
|
||
|
#
|
||
|
# Copyright 2005 Henrik Brix Andersen <brix@gentoo.org>
|
||
|
# Distributed under the terms of the GNU General Public License v2
|
||
|
# Alternatively, this file may be distributed under the terms of the BSD License
|
||
|
|
||
|
use strict;
|
||
|
|
||
|
my $debug = $ENV{'LOGWATCH_DEBUG'} || 0;
|
||
|
my $detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0;
|
||
|
my $debugcounter = 1;
|
||
|
|
||
|
my %hostapd;
|
||
|
my @unmatched;
|
||
|
|
||
|
if ($debug >= 5) {
|
||
|
print STDERR "\n\nDEBUG: Inside HOSTAPD Filter\n\n";
|
||
|
}
|
||
|
|
||
|
while (defined(my $line = <STDIN>)) {
|
||
|
if ($debug >= 5) {
|
||
|
print STDERR "DEBUG($debugcounter): $line";
|
||
|
$debugcounter++;
|
||
|
}
|
||
|
chomp($line);
|
||
|
|
||
|
if (my ($iface,$mac,$layer,$details) = ($line =~ /(.*?): STA (.*?) (.*?): (.*?)$/i)) {
|
||
|
unless ($detail == 10) {
|
||
|
# collapse association events
|
||
|
$details =~ s/^(associated) .*$/$1/i;
|
||
|
}
|
||
|
$hostapd{$iface}->{$mac}->{$layer}->{$details}++;
|
||
|
} else {
|
||
|
push @unmatched, "$line\n";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (keys %hostapd) {
|
||
|
foreach my $iface (sort keys %hostapd) {
|
||
|
print "Interface $iface:\n";
|
||
|
foreach my $mac (sort keys %{$hostapd{$iface}}) {
|
||
|
print " Client MAC Address $mac:\n";
|
||
|
foreach my $layer (sort keys %{$hostapd{$iface}->{$mac}}) {
|
||
|
print " $layer:\n";
|
||
|
foreach my $details (sort keys %{$hostapd{$iface}->{$mac}->{$layer}}) {
|
||
|
print " $details";
|
||
|
my $count = $hostapd{$iface}->{$mac}->{$layer}->{$details};
|
||
|
if ($count > 1) {
|
||
|
print ": " . $count . " Times";
|
||
|
}
|
||
|
print "\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($#unmatched >= 0) {
|
||
|
print "\n**Unmatched Entries**\n";
|
||
|
print @unmatched;
|
||
|
}
|
||
|
|
||
|
exit(0);
|