I found a error in my script but that is fixed in this version.
/Rickard Eriksson
-------------- next part --------------
#!/usr/bin/perl
# Version: 1.1
# This is a script to use with mrtg to count shorewall entrys in the log.
#
# Updates can be found at: http://ftp.shorewall.net/pub/shorewall/contrib/
# Made by Rickard Eriksson riceri@home.se
#
# Here you can see what i have in my mrtg config to use this script.
#
# ######################################################################
# # #
# # Rejected connections from you /var/log/messages file #
# # #
# ######################################################################
# Target[Hits]: `perl /path/to/hits.pl -reject`;
# Options[Hits]: gauge, noinfo, growright, transparent, nopercent, noo
# WithPeak[Hits]: ymw
# MaxBytes[Hits]: 10000
# Colours[Hits]: GREEN#00eb0c,BLUE#1000ff,DARK GREEN#006600,VIOLET#ff00ff
# YLegend[Hits]: Hits
# ShortLegend[Hits]: Hits
# Legend1[Hits]: Hits
# Legend2[Hits]: Hits
# LegendI[Hits]: Hits:
# LegendO[Hits]: Hits:
# Timezone[Hits]: GMT
# Title[Hits]: Connections rejected
# PageTop[Hits]: <H1>Connections rejected</H1>
# ######################################################################
## Start of config
# Path to Logfile:
my $Logfile = "/var/log/messages";
## End of config
use Time::Local;
if (@ARGV < 1) {
print "Usage: $0 [-drop][-reject][-both]\n";
exit;
}
my $Time = time - 300;
my %Month = ("Jan" => 0, "Feb" => 1, "Mar"
=> 2, "Apr" => 3, "Maj" => 4, "Jun" =>
5,
"jan" => 0, "feb" => 1, "mar"
=> 2, "apr" => 3, "maj" => 4, "jun" =>
5,
"Jul" => 6, "Aug" => 7, "Sep"
=> 8, "Oct" => 9, "Nov" => 10, "Dec"
=> 11,
"jul" => 6, "aug" => 7, "sep"
=> 8, "oct" => 9, "nov" => 10, "dec"
=> 11);
my $Count = 0;
open (LOG,$Logfile) or die "Can''t find file: $Logfile\n";
while (<LOG>) {
my ($Sec,$Min,$Hour,$Mday,$Mon,$Year) = localtime(time);
$Sec = substr $_, 13, 2;
$Min = substr $_, 10, 2;
$Hours = substr $_, 7, 2;
$Mday = substr $_, 4, 2;
$Mon = $Month{substr $_, 0, 3};
$Year += 1900;
my $Time2 = timelocal($Sec,$Min,$Hours,$Mday,$Mon,$Year);
if ($Time < $Time2) {
my @Line = split(/: /,$_);
if (substr($Line[1],0,10) eq "Shorewall:") {
my @Line2 = split(/:/,$Line[1]);
if (($ARGV[0] eq "-reject") || ($ARGV[0] eq
"-both")) {
if ($Line2[2] eq "REJECT") {
$Count++;
}
}
if (($ARGV[0] eq "-drop") || ($ARGV[0] eq "-both"))
{
if ($Line2[2] eq "DROP") {
$Count++;
}
}
}
}
}
close LOG;
print "$Count\n0\n1\nHits\n";
print STDERR "$Count\n0\n1\nHits\n";