|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Andrey Zonov 2:5020/830.28 19 Feb 2005 13:07:16 To : All Subject : помогите дописать скрипт -------------------------------------------------------------------------------- Помогите дописать биллинговый скрипт! Вообщем сейчас скрипт генерит html-ки из статистики ipacctd уже просуммированной по дням, например: ==============================stat.15-02-2005====================== 255.255.255.255 65535 192.168.34.100 65535 all 123 0 192.168.34.100 65535 255.255.255.255 65535 all 324 0 255.255.255.255 65535 192.168.34.101 65535 all 123 0 192.168.34.101 65535 255.255.255.255 65535 all 234 0 ==============================stat.15-02-2005====================== и так далее, т.е stat.16-02-2005, *17*, *18*.... после комманды #perl ipacct stat скрипт считает цифры по дням и суммарную, но дату не генерит, а очень хочется. Идея такая, создаётся такой файл: ==============================date====================== Fri Feb 15 00:00:00 UTC 2005 Fri Feb 16 00:00:00 UTC 2005 Fri Feb 17 00:00:00 UTC 2005 Fri Feb 18 10:25:00 UTC 2005 ==============================date====================== с прошедшими и текущей датой. Так вот хочется чтобы скрипт подбирал этот файл и в соответсвующей строке прописывал соответсвующую дату (в том числе и текущую). Скрипт был скачан из инета, но в нём этой фишки не было, но была задумка. А может и было реализовано, но я не понял как. Собственно сам скрипт: ==============================ipacct====================== #!/usr/bin/perl $mes = $ARGV[0]; open(NETS,'ipacct-net') || die "Open ipacct-net file"; while (<NETS>) { chomp(); ($ip,$name) = split(/:/); $nets{$ip} = $name; } close(NETS); %nets_org = reverse %nets; foreach $net (keys %nets_org) { open(OUT,">$net.html"); print OUT <<HTML; <html> <title>$net</title> <body bgcolor=FFFFFF> <center> <h1>$net</h1> <center> <table width=60%> <tr><th>дБФБ</th><th>рТЙОСФП (лВ)</th><th>рЕТЕДБОП (лВ)</th></tr> HTML close(OUT); } opendir(DIR,"."); @logs = grep {/^$mes/} readdir(DIR); closedir(DIR); foreach $file (sort @logs) { open(LOG,$file); $file =~ /(\d{4})-(\d{2})-(\d{2})/; print "Calc in $file\n"; $i++; while (<LOG>) { ($src_ip,$src_port,$dst_ip,$dst_port,$proto,$packs,$bytes) = split(/\t/); if (($net=$nets{$dst_ip}) ne "") { $out{$net} += $bytes/1000; $out_sum{$net} += $bytes/1000000; } if (($net=$nets{$src_ip}) ne "") { $in{$net} += $bytes/1000; $in_sum{$net} += $bytes/1000000; } } close(LOG); $color = ($i % 2) ? "EEEEEE":"DDDDDD"; foreach $net (keys %nets_org) { open(OUT,">>$net.html"); print OUT "<tr bgcolor=$color><td>$3/$2/$1</td>"; printf OUT "<td align=right>%.2f</td><td align=right>%.2f</td></tr>\n",$out{$net},$in{$net}; close(OUT); } %out = undef; %in = undef; } foreach $org (keys %nets_org) { open(OUT,">>$org.html"); print OUT "<tr><td><b>чУЕЗП (нВ)</b></td>"; printf OUT "<td align=right><b>%.2f</b></td>",$out_sum{$org}; printf OUT "<td align=right><b>%.2f</b></td>",$in_sum{$org}; print OUT "</tr><table><p><small>1Mb = 1000byte</small></body><html>"; } ==============================ipacct====================== print OUT "<tr bgcolor=$color><td>$3/$2/$1</td>"; - вот эта строчка имеет не посредственное отношение к моей проблемме, но как её заюзать? ==============================ipacct-net====================== 192.168.34.100:ip100 192.168.34.101:ip101 ==============================ipacct-net====================== вообщем всё-таки хочется подключить файл date - мне так больше нравится. Успехов! --- GoldED+/W32 snapshot-2000.12.24 * Origin: Жизнь - хорошая штука (2:5020/830.28) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/394442170244.html, оценка из 5, голосов 10
|