Страница 1 из 1

Суммирование трафика

Добавлено: 2010-06-14 15:54:15
mlevel
Есть файл, содержимое:

Код: Выделить всё

|     ip_sender   |   ip_recipient    |  traffic   |
     10.100.34.5       92.128.34.2         234
     92.128.34.2       10.100.34.5         423
     10.100.33.4       92.128.42.6         234
     92.128.34.2       10.100.33.4         423
Нужно просуммировать отдельно входящий и исходящий трафик по каждому IP - адресу.
Как можно это реализовать с помощью sed или awk?

Re: Суммирование трафика

Добавлено: 2010-06-15 7:45:34
ProFTP

Код: Выделить всё

#!/usr/bin/perl

use Data::Dumper;

use strict;
use warnings;

open( TRAF, "perl_traf.txt" );

my $in;
my $out;

while (my $line = <TRAF>) {

my ($l1,$l2,$l3) = split (" ", $line, 3);

 next if ( !$l1 or !$l2  || ($l1 or $l2) !~ /(\d+\.\d+\.\d+\.\d+)/);

 $in->{$l1} = !$in->{$l1} ? $in->{$l1} = $l3 : $in->{$l1} += $l3;

 $out->{$l2} = !$out->{$l2} ? $out->{$l2} = $l3 : $out->{$l2} += $l3;

}

print "  ip_sender:\n";
print Dumper $in;

print "\n\n\n\n";

print "  ip_recipient:\n";

print Dumper $out;

Код: Выделить всё

$ ./perl_traf2.pl
  ip_sender:
$VAR1 = {
          '10.100.33.4' => 468,
          '92.128.34.2' => 1269,
          '10.100.34.5' => 468
        };




  ip_recipient:
$VAR1 = {
          '10.100.33.4' => 846,
          '92.128.34.2' => 468,
          '10.100.34.5' => 846,
          '92.128.42.6' => 468
        };

Re: Суммирование трафика

Добавлено: 2010-06-15 17:44:29
mlevel
Ох, спасибо огромное...