The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"динамические хеши в perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"динамические хеши в perl" 
Сообщение от Moralez emailИскать по авторуВ закладки(ok) on 01-Апр-05, 13:03  (MSK)
не могу понять как на perl правильно работать с данными такого плана:

есть лог демона ipacctd
192.168.2.252   52364   192.168.2.254   53      udp     79      1
192.168.2.254   53      192.168.2.252   52364   udp     124     1
192.168.2.254   53      192.168.2.252   62220   udp     183     1
192.168.2.15    4298    192.168.2.254   3128    tcp     474160  11854
192.168.2.252   64435   66.151.150.22   2703    tcp     316     5
66.151.150.22   2703    192.168.2.252   64435   tcp     552     7

надо насоздавать структур вида dstIP-srcIP-proto-port
затем агрегировать и только после этого сунуть в SQL.

Можно ли это сделать средствами perl? :(
Хеши, имхо, не катят. Я же не знаю сколько у меня будет dstIP-ов. И srcIP-ов тоже.....

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "динамические хеши в perl" 
Сообщение от rWizard emailИскать по авторуВ закладки(??) on 01-Апр-05, 16:46  (MSK)
я использовал такую конструкцию:

$TRAF_PIP{"$form_ip"}{"$to_ip"}
= { BYTES => $bytes,
    T_ClASS => $t_class,
    UID => $uid
};

это позволяет при проходе инфы в простом цикле производить агрегатацию
ввиде
if ( defined $TRAF_PIP{"$from_ip"}{"$to_ip"} ) {
$TRAF_PIP{"$from_ip"}{"$to_ip"}{BYTES} += $bytes;
}
else  {
$TRAF_PIP{"$from_ip"}{"$to_ip"} =  
{
    BYTES => $bytes,
    T_ClASS => find_tclass($from_ip,$to_ip),
    UID => find_uid($from_ip,$to_ip)
};
}

Вниминие! агрегатированную инфу нужно сбрасывать примерно раз в 1000-5000 записей, иначе задействуется слишком много памяти.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "динамические хеши в perl" 
Сообщение от Moralez emailИскать по авторуВ закладки(ok) on 04-Апр-05, 13:12  (MSK)
Спасибо, это намного лучше, чем сделано сейчас для подсчёта без учёта портов, но, ИМХО, этот способ не годится для того, чтобы заводить конструкции источник-назначение-порт-протокол. Или я недопонял?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "динамические хеши в perl" 
Сообщение от rWizard emailИскать по авторуВ закладки(??) on 04-Апр-05, 21:58  (MSK)
можно сделать и с учетом портов
вида
$HASH{SRC_IP}{SCR_PORT}{DST_IP}{DST_PORT}
только вот это ещё пагубнее скажется на использовании память

сейчас ищу более оптимально решение для агрегататора, если интересно, можете писать в icq 172799222

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "динамические хеши в perl" 
Сообщение от Moralez emailИскать по авторуВ закладки(ok) on 14-Апр-05, 10:19  (MSK)
кто-нибудь заинтересовался темой? можете подсказать, что есть find_uid?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "динамические хеши в perl" 
Сообщение от Moralez emailИскать по авторуВ закладки(ok) on 11-Июн-05, 12:30  (MSK)
После некоторого забивания, решил вернуться к вопросу. Так как в программировании не силён и не поняв предложенных вариантов (всё равно большое спасибо), сделал через банальные массивы:

while читается из лога {
foreach @агрегированный_траф{
split на адресН, адресИ, порт итд
если совпадает, заменяем в @агрегированный_траф, если нет, в конце цикла добавляем в @агрегированный_траф новую строчку
}
}

жуть, но зато рассматриваемых полей может быть хоть 100...

на 2МБ логе ng_ipact из 41000 записей ест 3 МБ ОЗУ и выполняется 25 секунд (на Р3-800).

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру