1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/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);
|