The OpenNET Project / Index page

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

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

"Разобрать лог"
Сообщение от agat Искать по авторуВ закладки(??) on 20-Июл-04, 05:36  (MSK)
Уважаемые господа! Если не трудно помогите.....
Имеем лог файл radiusa следующего вида
Thu May 27 16:17:43 2004
Acct-Session-Id = "00000044"
Called-Station-Id = "хххх.хххх.хххх"
Calling-Station-Id = "хххх.хххх.хххх"
Acct-Authentic = Local
User-Name = "хххх.хххх.хххх"
Acct-Status-Type = Start
NAS-Port-Type = 19
NAS-Port-Id = 290
Service-Type = Framed-User
NAS-IP-Address = ххх.ххх.ххх.ххх
Acct-Delay-Time = 0
Timestamp = 1085642263
Request-Authenticator = Verified

Thu May 27 17:09:05 2004
Acct-Session-Id = "00000044"
Called-Station-Id = "хххх.хххх.хххх"
Calling-Station-Id = "хххх.хххх.хххх"
Acct-Session-Time = 3083
Acct-Input-Octets = 40108
Acct-Output-Octets = 22791
Acct-Input-Packets = 456
Acct-Output-Packets = 84
Acct-Authentic = Local
User-Name = "хххх.хххх.хххх"
Acct-Status-Type = Alive
NAS-Port-Type = 19
NAS-Port-Id = 290
Service-Type = Framed-User
NAS-IP-Address = xxx.xxx.xxx.xxx
Acct-Delay-Time = 0
Timestamp = 1085645345
Request-Authenticator = Verified

Как можно написать скрипт, что бы рабобрать это все по DATE, USER-Name и сосчетать количество переданных байт.

Заранее благодарю за помощь.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Разобрать лог"
Сообщение от mirya emailИскать по авторуВ закладки on 20-Июл-04, 13:52  (MSK)
@weekday = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
$weekday{$weekday[$_]} = $_ for (0..$#weekday);

@month = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
$month{$month[$_]} = $_ for (0..$#month);

@mylog = (); # dummy

MAINLOOP:
while (<>) {
chomp;
next if /^\s*$/o;
if (/^\s*(\w\w\w) (\w\w\w) (\d+) (\d+):(\d+):(\d+) (\d+)/o &&
    $weekday{$1} && $month{$2}) {
push @mylog, $cur_item if $cur_item;
$cur_item = [$weekday{$1}, $month{$2}, $3, $4, $5, $6, $7, '', 0];
next MAINLOOP;
}
if (/^\s*([\d\w-]+)\s*=\s*(.*)/o) {
($key, $val) = ($1, $2);
$val =~ s/\s+$//o;
$val = $1 if $val =~ /^"(.*)"$/o;
if ($key eq 'User-Name') {
$cur_item -> [7] = $val;
} elsif ($key eq 'Acct-Input-Octets') {
$cur_item -> [8] += $val;
} elsif ($key eq 'Acct-Output-Octets') {
$cur_item -> [8] += $val;
}
}
}
push @mylog, $cur_item if $cur_item;

print "$_->[7]\t$_->[8]b\t$weekday[$_->[0]] $month[$_->[1]] $_->[2] $_->[3]:$_->[4]:$_->[5] $_->[6]\n" for (@mylog);

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Разобрать лог"
Сообщение от agat Искать по авторуВ закладки(??) on 21-Июл-04, 04:22  (MSK)
Огромное спасибо!
Чуть чуть переделал, доделал вывод в файл с разбивкой и все! Работает!
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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