Uczyniłem mały postęp. Teraz plik 20061 ma jakis rozmiar i sa wnim wypisane osoby z /etc/host , ale są tam tylko wartości 0 które sie wogóle nie zmieniaja :/
Oto mój plik stat.pl
#! /usr/bin/perl
#--------Ustawienie stałych użytkownika-------------------
my $path = '/tmp/stats'; # katalog ze statystyką
my $ipt = '/usr/sbin/iptables'; # lokalizacja iptables
my $hosts_names = 1; # nazwy zamiast IP (domyślnie: wyłączone
# ----------Tutaj nie należy już nic zmieniać-------------
# --------------------------------------------------------
my $month = int(`date +%m`);
my $year = int(`date +%Y`);
my $file = "$path/$year$month";
my $now = time();
my @info;
# Odczytanie danych z firewalla
if($hosts_names)
{
@info = `$ipt -t mangle -L STAT -vxZ`;
}
else
{
@info = `$ipt -t mangle -L STAT -vnxZ`;
}
my %upload;
my %download;
my %activity;
foreach my $line (@info)
{
chomp($line);
my $host = "";
my $bytes = 0;
my $pkts = 0;
if($hosts_names)
{
if($line =~ /^ +([0-9]+) +([0-9]+).*any +anywhere +(.*)/ )
{
$line =~ s/^ +([0-9]+) +([0-9]+).*any +anywhere +(.*)/$1 $2 $3/g;
($pkts, $bytes, $host) = split ' ',$line;
$download{$host} = $bytes;
}
elsif($line =~ /^ +([0-9]+) +([0-9]+).*any +(.*) +anywhere +/ )
{
$line =~ s/^ +([0-9]+) +([0-9]+).*any +(.*) +anywhere +/$1 $2 $3/g;
($pkts, $bytes, $host) = split ' ',$line;
$upload{$host} = $bytes;
}
if($download{$host} || $upload{$host})
{
$activity{$host} = $now;
}
}
else
{
if($line =~ /^[ ]+([0-9]+)[ ]+([0-9]+).*all.* 0\.0\.0\.0\/0[ ]+([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3
{
$line =~ s/^[ ]+([0-9]+)[ ]+([0-9]+).*all.* 0\.0\.0\.0\/0[ ]+([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-
($pkts, $bytes, $host) = split ' ',$line;
$download{$host} = $bytes;
}
elsif($line =~ /^[ ]+([0-9]+)[ ]+([0-9]+).*all.* ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[ ]+0\.0\.0\
{
$line =~ s/^[ ]+([0-9]+)[ ]+([0-9]+).*all.* ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[ ]+0\.0\
($pkts, $bytes, $host) = split ' ',$line;
$upload{$host} = $bytes;
}
if($download{$host} || $upload{$host})
{
$activity{$host} = $now;
}
}
}
# Odczytanie danych z poprzedniego wykonania skryptu
if( open(LOGFILE, $file) )
{
my(@lines) = <LOGFILE>;
close(LOGFILE);
foreach my $line (@lines)
{
chomp($line);
if( $line =~ /^(.*)\t+([0-9]+)\t+([0-9]+)\t+([0-9]+)/ ||
$line =~ /^(.*)\t+([0-9]+)\t+([0-9]+)/ )
{
chomp $line;
my ($host, $up, $down, $activ) = split(/\t+/, $line);
$activity{$host} = $activity{$host} || $activ;
$download{$host} = $download{$host} + $down;
$upload{$host} = $upload{$host} + $up;
}
}
}
# zapis danych
open(OUTFILE, ">$file") or die("Fatal error: Unable to write '$file'. Exiting.\n");
foreach my $host (keys %upload)
{
print OUTFILE "$host\t$upload{$host}\t$download{$host}\t$activity{$host}\n";
}
close(OUTFILE);
Czy jak mój czlon adresu IP to 192.168.100. to musze to jeszcze gdzieś zmienić oprócz pliku bałwan jestem??