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

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mlevel
мл. сержант
Сообщения: 105
Зарегистрирован: 2009-09-28 15:31:39

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

Непрочитанное сообщение mlevel » 2010-06-14 15:54:15

Есть файл, содержимое:

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

|     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?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2010-06-15 7:45:34

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

#!/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
        };
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

mlevel
мл. сержант
Сообщения: 105
Зарегистрирован: 2009-09-28 15:31:39

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

Непрочитанное сообщение mlevel » 2010-06-15 17:44:29

Ох, спасибо огромное...