Печать XML отчетов

Технические вопросы по UTM 5.0
4b4
Сообщения: 20
Зарегистрирован: Пн фев 07, 2005 13:35
Контактная информация:

Печать XML отчетов

Сообщение 4b4 »

Подскажите пожалуйста, как можно распечатать xml-файлы с отчетами (в виде таблиц), сохраненные на диске с помощью программы интерфейса администратора? На сколько я понимаю в программе администратора нет функции распечатать полученные отчеты?
-
ПОРНОФИЛЬМЫ НА DVD "Лишение девственности"
Virginity and defloration DVD
Последний раз редактировалось 4b4 Сб сен 10, 2011 19:00, всего редактировалось 1 раз.

aospan
NetUP Team
Сообщения: 1639
Зарегистрирован: Чт янв 13, 2005 20:30

Re: Печать XML отчетов

Сообщение aospan »

4b4 писал(а):Подскажите пожалуйста, как можно распечатать xml-файлы с отчетами (в виде таблиц), сохраненные на диске с помощью программы интерфейса администратора? На сколько я понимаю в программе администратора нет функции распечатать полученные отчеты?
экспортированные XML -файлы можно открыть в Excel и далее уже обрабатывать как необходимо (форматировать, печатать и т.д.).

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

экспортированные XML -файлы можно открыть в Excel
или openoffice calc - есть и под вин и под лин и под ...

taf
Сообщения: 309
Зарегистрирован: Вс янв 30, 2005 11:41

Сообщение taf »

dalex писал(а):
экспортированные XML -файлы можно открыть в Excel
или openoffice calc - есть и под вин и под лин и под ...
Каким образом вы OOo заставляете открыть xml как таблицу? У меня он почему-то постоянно открывает xml как текстовый документ. OOo 2.0

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

Каким образом вы OOo заставляете открыть xml как таблицу? У меня он почему-то постоянно открывает xml как текстовый документ. OOo 2.0
действительно :-( обломно.

taf
Сообщения: 309
Зарегистрирован: Вс янв 30, 2005 11:41

Сообщение taf »

dalex писал(а):
Каким образом вы OOo заставляете открыть xml как таблицу? У меня он почему-то постоянно открывает xml как текстовый документ. OOo 2.0
действительно :-( обломно.
Угу, и именно поэтому давно уже предлагал разработчикам реализовать экспорт в CSV-формат - и переваривают его все кто ни попадя, и удобен для дальнейшей аппаратной обработки (таки его гоооораздо проще прогнать простейшим перлушным скриптом тот же SQL, чем ломать голову над XML), и места на порядок меньше занимает (актуально когда идут разборки с детальной статистикой).

j4ck
Сообщения: 46
Зарегистрирован: Ср фев 09, 2005 09:44

Сообщение j4ck »

написал парсер на bash, с использованием awk и sed, никаких проблем - из xml-отчета получается xls, обрабатывал файлы размером до 120 мб, в этом случае bash оказался лучше, чем perl со стандартным модулем для обработки XML.

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

написал парсер на bash, с использованием awk и sed, никаких проблем - из xml-отчета получается xls
поделитесь если не жалко ;-)

bas
Сообщения: 3
Зарегистрирован: Ср дек 21, 2005 14:51

XML2CSV

Сообщение bas »

Сам недавно решал подобную задачу. В связи с тем что биллинг перестал собирать статистику Netflow после того как ему был послан сигнал HUP. Статистику пришлось брать с другого-резервного, экспортировать данные из GigaBase в XML, конвертировать из XML в CSV, конвертировать из CSV в формат flow-tools и уже дальше посылать сформированный netflow поток в биллинг.
Только у меня размер xml файлов был более 300 Мбайт.
Встроенный XML парсер не подошел. ;) Т.к.
1. пытается загрузить весь файл в память
2. хранит XML в памяти в виде объектов, и объем занимает в несколько раз больше чем размер файла.
В результате пришлось писать скрипт с использованием XML::Twig и поэлементным чтением и обработкой файла.
Ниже приведены два скрипта:
1. Скрипт для конвертации из XML(UTM5) в CSV
xml2flowtools.pl

Код: Выделить всё

#!/usr/bin/perl -w
use strict;
use XML::Twig;

print "#:unix_secs,dpkts,doctets,first,last,srcaddr,dstaddr,nexthop,input,output,srcport,dstport,prot,tos,tcp_flags,src_mask,dst_mask,src_as,dst_as\n";

my $twig= new XML::Twig(               # create the twig
              TwigRoots =>
                              { iptraffic_raw => \&name,      # build the twig only for name elements
                              } ,                    # and call the name handler for each
                              );

if( my $file= $ARGV[0]) { $twig->parsefile( $file); } # process the twig
      else                    { $twig->parse( \*STDIN);   }


sub name {
my( $twig, $netflow)= @_;
my $unix_secs = $netflow->field ('timestamp');
my $srcaddr = $netflow->field ('srcaddr');
my $dstaddr = $netflow->field ('dstaddr');
my $nexthop = $netflow->field ('nexthop');
my $input = $netflow->field ('input');
my $output = $netflow->field ('output');
my $dpkts = $netflow->field ('dPkts');
my $doctets = $netflow->field ('dOctets');
my $first = $netflow->field ('First');
my $last = $netflow->field ('Last');
my $srcport = $netflow->field ('srcport');
my $dstport = $netflow->field ('dstport');
my $tcp_flags = $netflow->field ('tcp_flags');
my $prot = $netflow->field ('prot');
my $tos = $netflow->field ('tos');
my $src_as = $netflow->field ('src_as');
my $dst_as = $netflow->field ('dst_as');
my $src_mask = $netflow->field ('src_mask');
my $dst_mask = $netflow->field ('dst_mask');
$srcaddr = $srcaddr < 0 ? &#40;$srcaddr + 0xFFFFFFFF + 1&#41;&#58;$srcaddr;
$srcaddr = inet_ntoa&#40;pack&#40;"N", $srcaddr&#41;&#41;;
$dstaddr = $dstaddr < 0 ? &#40;$dstaddr + 0xFFFFFFFF + 1&#41;&#58;$dstaddr;
$dstaddr = inet_ntoa&#40;pack&#40;"N", $dstaddr&#41;&#41;;
$nexthop = $nexthop < 0 ? &#40;$nexthop + 0xFFFFFFFF + 1&#41;&#58;$nexthop;
$nexthop = inet_ntoa&#40;pack&#40;"V", $nexthop&#41;&#41;;
print "$unix_secs,$dpkts,$doctets,$first,$last,$srcaddr,$dstaddr,$nexthop,$input,$output,$srcport,$dstport,$prot,$tos,$tcp_flags,$src_mask,$dst_mask,$src_as,$dst_as\n";
$twig->purge;                       #  free memory
2. Конвертортация из CSV в flow-tools ascii2flow.sh

Код: Выделить всё

#!/bin/bash
/usr/local/netflow/bin/flow-import -z0 -f2 -V5 -m 3FF31E1 -d3 <$1 >$2
Надеюсь что это кому-нибудь поможет в решении его задач.

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

bas
10x

Yura_Sakh
Сообщения: 3
Зарегистрирован: Ср май 18, 2005 16:28

Сообщение Yura_Sakh »

to bas
Сделал всё по Вашим рекомендациям,получил файл iptraffic.csv .
Потом
ascii2flow.sh iptraffic.csv flows, затем
cat flows | /usr/local/netflow/bin/flow-send 127.0.0.1/127.0.0.1/9996
tcpdump -i lo port 9996 показывает наличие пакетов.Трафик не появляется.Я сделал выборку по времени ,соответствующему исходному gigabase файлу.
Прошу не пинать сильно,что я делаю не так?

bas
Сообщения: 3
Зарегистрирован: Ср дек 21, 2005 14:51

Сообщение bas »

2Yura_Sakh:
для экспорта статистики я использовал следующий скрипт:

Код: Выделить всё

#!/bin/bash
# Send all flows to collect
/usr/local/netflow/bin/flow-cat $1 | /usr/local/netflow/bin/flow-send -V5 -d5 -x1 0/127.0.0.1/9996
и все импортировалось.
Только есть одно замечание. UTM5 не обращает внимание на timestamp в нетфлоу записях. Поэтому надо смотреть появляется ли детальная статистика именно в текущее время, а не в тот период времени за который она была первоначально экспортирована.

kubazerg
Сообщения: 3
Зарегистрирован: Ср янв 12, 2011 09:58

Сообщение kubazerg »

подскажите где ошибка
perl xml2flowtools.pl iptraffic_raw.xml
Missing right curly or square bracket at xml2flowtools.pl line 45, at end of line
syntax error at xml2flowtools.pl line 45, at EOF
Execution of xml2flowtools.pl aborted due to compilation errors.
я скопировал с форума этот скрипт.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Yura_Sakh писал(а):Трафик не появляется
IP брандмауэра не задан для юзеров в биллинге? трафик будет игнорироваться, если источник Netflow различается.
kubazerg писал(а):подскажите где ошибка
Судя по всему, в конце файла нужно добавить закрывающую фигурную скобку.

kubazerg
Сообщения: 3
Зарегистрирован: Ср янв 12, 2011 09:58

Сообщение kubazerg »

вот в таком виде у меня запустилась

Код: Выделить всё

use strict;
use XML&#58;&#58;Twig;
use Socket;
print "#&#58;unix_secs,dpkts,doctets,first,last,srcaddr,dstaddr,nexthop,input,output,srcport,dstport,prot,tos,tcp_flags,src_mask,dst_mask,src_as,dst_as\n";

my $twig= new XML&#58;&#58;Twig&#40;               # create the twig
              TwigRoots =>
                              &#123; iptraffic_raw => \&name,      # build the twig only for name elements
                              &#125; ,                    # and call the name handler for each
                              &#41;;

if&#40; my $file= $ARGV&#91;0&#93;&#41; &#123; $twig->parsefile&#40; $file&#41;; &#125; # process the twig
      else                    &#123; $twig->parse&#40; \*STDIN&#41;;   &#125;


sub name &#123;
my&#40; $twig, $netflow&#41;= @_;
my $unix_secs = $netflow->field &#40;'timestamp'&#41;;
my $srcaddr = $netflow->field &#40;'srcaddr'&#41;;
my $dstaddr = $netflow->field &#40;'dstaddr'&#41;;
my $nexthop = $netflow->field &#40;'nexthop'&#41;;
my $input = $netflow->field &#40;'input'&#41;;
my $output = $netflow->field &#40;'output'&#41;;
my $dpkts = $netflow->field &#40;'dPkts'&#41;;
my $doctets = $netflow->field &#40;'dOctets'&#41;;
my $first = $netflow->field &#40;'First'&#41;;
my $last = $netflow->field &#40;'Last'&#41;;
my $srcport = $netflow->field &#40;'srcport'&#41;;
my $dstport = $netflow->field &#40;'dstport'&#41;;
my $tcp_flags = $netflow->field &#40;'tcp_flags'&#41;;
my $prot = $netflow->field &#40;'prot'&#41;;
my $tos = $netflow->field &#40;'tos'&#41;;
my $src_as = $netflow->field &#40;'src_as'&#41;;
my $dst_as = $netflow->field &#40;'dst_as'&#41;;
my $src_mask = $netflow->field &#40;'src_mask'&#41;;
my $dst_mask = $netflow->field &#40;'dst_mask'&#41;;
$srcaddr = $srcaddr < 0 ? &#40;$srcaddr + 0xFFFFFFFF + 1&#41;&#58;$srcaddr;
$srcaddr = inet_ntoa&#40;pack&#40;"N", $srcaddr&#41;&#41;;
$dstaddr = $dstaddr < 0 ? &#40;$dstaddr + 0xFFFFFFFF + 1&#41;&#58;$dstaddr;
$dstaddr = inet_ntoa&#40;pack&#40;"N", $dstaddr&#41;&#41;;
$nexthop = $nexthop < 0 ? &#40;$nexthop + 0xFFFFFFFF + 1&#41;&#58;$nexthop;
$nexthop = inet_ntoa&#40;pack&#40;"V", $nexthop&#41;&#41;;
print "$unix_secs,$dpkts,$doctets,$first,$last,$srcaddr,$dstaddr,$nexthop,$input,$output,$srcport,$dstport,$prot,$tos,$tcp_flags,$src_mask,$dst_mask,$src_as,$dst_as\n";
$twig->purge;
&#125;;#  free memory

Ответить