Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Необычная задача


Автор: Nurk_ 3.7.2007, 17:53
Добра !
вот такая вот задачка есть MRTG (монитор активности сети) он гнерит html и кртинки
для каждого итерфеса. 
192.168.10.48_1.html и 192.168.10.48_1-day.png (192.168.10.48 - ip интерфеса 1 - номер интерфеса в даном случае eth1:1 ) это html`к и кортинка 
кней отображающая статистику по проходящему трафику через интерфес , также на этой страничке картинка за 5, 30 минут...
Проблема за ключается в том что сетевых интерфесов много порядка 70 и статиснику просматривать каждый html файл очень неудобно....
нужно какимто образм собрать их на одной странице пусть с урезанными данными нппример стистика только за последние 5 минут...
Формат   192.168.10.48_1.htm
<html>
<!-- Begin Head -->
             ---      
(насколько понимаю описывается оформление)
             ---
<html>
<!-- End Head -->
<head>
<!-- Begin `Daily' Graph (5 Minute -->
(нужная мне инфа )
<!-- End `Daily' Graph (5 Minute -->
<!-- Begin `Daily' Graph (30 Minute -->
<!-- End `Daily' Graph (5 Minute -->
<!-- Begin `Monthly' Graph (2 Hour -->
<!-- End `Daily' Graph (2 Hour -->
<!-- Begin `Yearly' Graph (1 Day -->
<!-- End `Daily' Graph (1 Day  -->
<!-- Begin Legend -->
!-- End Legend --><!-- Begin MRTG Block -->
<!-- End MRTG Block -->
 </body>
</html>
Пажалусто помогите реализовать эту задачу

Автор: nitr 3.7.2007, 19:08
почему необычно? Решений много... вот (писал прям в форум) :
Код

#!/usr/bin/perl
use strict;
use warnings;

# массив, в котором и перечисляем наши интерфейсы (если конечно они не по порядку), если по порядку, то проще...
my @list = qw(
    192.168.48.1_1
    192.168.48.2_1
);

foreach my $filename (@list) {
    open my $flh, "< $filename.html" or die "Can't open file $filename\n";
    open my $oflh, ">> all_if.html";
    print $oflh "> Interface:  $filename    <\n\n";
    my $i = 0;
    while (<$flh>) {
        last if m/<!-- End `Daily' Graph \(5 Minute -->/i;
        print $oflh "$_" if $i;
        $i = 1 if m/<!-- Begin `Daily' Graph \(5 Minute -->/i;
    }
    print $oflh "\n############################\n\n\n\n";
    close $oflh;
    close $flh;
}


Добавлено через 2 минуты и 6 секунд
его можно так переделать, а можно вообще иначе написать ;) хе хе

Автор: mahoro 7.7.2007, 00:16
Я не поверю, если вы скажете, что по-другому MRTG генерировать графики не умеет.

К тому же, есть cacti - там это можно сделать в пять мышекликов.

Автор: Neuronix 23.7.2007, 11:38
ИМХО, задача абсолютно тривиальна м имеет множемтво решений

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)