LINUX.ORG.RU
ФорумAdmin

iptables ULOG


0

0

Поскажите как подсчитать трафик за какой-то конкретный день для конкретного хоста пропарсив log-файл оставшияся после

iptables -A enabled1 -j ULOG --ulog-prefix "enabled1"

средствами bash. Мож есть у кого примитивный скриптик.

Mar 9 23:42:48 user enabled1 IN=ppp0 OUT=eth0 MAC= SRC=81.18.129.252 DST=192.168.3.7 LEN=124 TOS=00 PREC=0x00 TTL=58 ID=0DF PROTO=UDP SPT=53 DPT=32769 LEN=104

Что тут размер определяет. Считать и TCP и UDP или только TCP?

anonymous

Глянь ulog-acctd, конфиг прост до одурения, формат лога можно настроить как хочешь, а дальше на bash/perl пропарсить труда не составит

PycmaM
()

#!/usr/bin/perl

use Time::Local;

my ($date,$host,$prefix,$logfile) = @ARGV;
my ($day,$month,$year) = split(/\./,$date);

my $stamp1 = timelocal(1,1,0,$day,$month-1,$year);
my $stamp2 = timelocal(59,59,23,$day,$month-1,$year);

my $in = 0;
my $out = 0;

open LOGFILE, "< $logfile";
while (<LOGFILE>) {
	chomp;
	($stamp,$dst,$src,$bytes,$pref) = split(/\s/);
	if ($stamp ge $stamp1 && $stamp le $stamp2 && $pref eq $prefix) {
		if ($dst eq $host) {
			$in += $bytes;
		}
		if ($src eq $host) {
			$out += $bytes;
		}
	}
}

close LOGFILE;
print "incoming: $in bytes\noutgoing: $out bytes\n";


формат лога "%t\t%s\t%d\t%b\е%f\n"

пример:

1173503528	10.1.1.1	10.1.1.2	1024	prefix1
1173503528	10.1.1.2	10.1.1.2	1024	prefix1
1173503528	10.1.1.1	10.1.1.2	1024	prefix1
1173503528	10.1.1.1	10.1.1.2	1024	prefix1
1173503528	10.1.1.2	10.1.1.2	1024	prefix1
1173503528	10.1.1.1	10.1.1.2	1024	prefix2
1173503528	10.1.1.1	10.1.1.2	1024	prefix1
1173503528	10.1.1.1	10.1.1.2	1024	prefix2
1173503528	10.1.1.1	10.1.1.2	1024	prefix2


$ perl sample.pl 10.03.2007 10.1.1.1 prefix1 test.log
incoming: 0 bytes
outgoing: 4096 bytes

PycmaM
()
Ответ на: комментарий от PycmaM

писал на яве парсер логов по свободному формату, ориентировался на ulog, если надо - скину

bromantik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.