Уважаемые господа! Если не трудно помогите.....
Имеем лог файл 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 = VerifiedThu 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 и сосчетать количество переданных байт.
Заранее благодарю за помощь.
@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);
Огромное спасибо!
Чуть чуть переделал, доделал вывод в файл с разбивкой и все! Работает!