Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 помогите дописать скрипт   Andrey Zonov   19 Feb 2005 13:07:16 
Архивное /ru.unix.bsd/394442170244.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional