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


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Constantin Stefanov                  2:5020/400     01 Aug 2006  15:32:17
 To : Constantin Stefanov
 Subject : Re: netdisco под FreeBSD 6.1 - ошибка perl - виноват SNMP.pm из net-snm
 -------------------------------------------------------------------------------- 
 
 
 После некоторых разбирательств, найден (по-моему) виновник безобразия,
 может, кто подскажет, что делать дальше.
 
 Кажется, виноват модуль SNMP.pm, который ставится как часть net-snmp.
 Конкретно, есть там класс SNMP::Session. У него есть метод bulkwalk. По
 документации (в предыдущем письме есть) он должен возвратить массив
 ссылок на массивы с ответами. Hа самом деле, он возвращает ссылку на сам
 объект SNMP::Session.
 Вот небольшой пример, который это демонстрирует:
 ------------------------------------------------------------------------
 #!/usr/bin/perl -w
 
 use SNMP;
 use strict;
 use Data::Dumper;
 
 my $sess;
 my $numInts;
 my $i;
 my ($desc, $in, $out);
 
 $sess = new SNMP::Session(DestHost => '192.168.0.1', Community =>
 'public', Version => 2);
 
 $numInts = $sess->get('ifNumber.0');
 ($desc, $in, $out) = $sess->bulkwalk(0, $numInts, [['ifDescr'],
 ['ifInOctets'], ['ifOutOctets']]);
 
 if($sess->{ErrorNum}) {
         die "SNMP error happened";
 }
 
 print Dumper($desc);
 
 for $i (0..($numInts - 1)) {
         printf "Interface %4s: %s inOctets, %s outOctets\n",
                 $$desc[$i]->val, $$in[$i]->val, $$out[$i]->val;
 }
 -----------------------------------------------------------------------
 Пример, почти один в один списан из perldoc SNMP, добавлена обработка
 ошибок и вызов Dumper.
 Вот его выдача:
 -----------------------------------------------------------------------
 $VAR1 = bless( {
                  'UseLongNames' => 0,
                  'UseEnums' => 0,
                  'UseNumeric' => 0,
                  'BestGuess' => 0,
                  'SessPtr' => bless( do{\(my $o = 136249856)},
 'SnmpSessionPtr' ),
                  'LocalPort' => 0,
                  'ErrorStr' => '',
                  'UseSprintValue' => 0,
                  'Community' => 'public',
                  'ErrorNum' => 0,
                  'RetryNoSuch' => 0,
                  'TimeStamp' => undef,
                  'Retries' => -1,
                  'Version' => 2,
                  'ErrorInd' => 0,
                  'DestHost' => '192.168.0.1',
                  'Timeout' => -1
                }, 'SNMP::Session' );
 Not an ARRAY reference at ./test.pl line 24.
 -----------------------------------------------------------------------
 Исследование SNMP.pm показало, что результат функции берется практически
 напрямую из SNMP.so. В исходнике SNMP.so я уже не разобрался - никогда
 не имел дела с биндингом сишного кода в перл.
 
 Может, кто подскажет, как это все лечить или куда мне теперь податься с
 этим знанием, где подскажут?
 
 -- 
 Константин Стефанов
 
 Hа заборе было написано слово "мир" с тремя ошибками.
 --- ifmail v.2.15dev5.3
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 netdisco под FreeBSD 6.1 - ошибка perl.   Constantin Stefanov   31 Jul 2006 16:46:42 
 Re: netdisco под FreeBSD 6.1 - ошибка perl - виноват SNMP.pm из net-snm   Constantin Stefanov   01 Aug 2006 15:32:17 
 Re: netdisco под FreeBSD 6.1 - ошибка perl - виноват SNMP.pm из net-snm   Sergey Matveychuk   02 Aug 2006 11:06:53 
 Re: netdisco под FreeBSD 6.1 - ошибка perl - виноват SNMP.pm из net-snm   Constantin Stefanov   02 Aug 2006 12:37:43 
 Re: netdisco под FreeBSD 6.1 - ошибка perl - виноват SNMP.pm из net-snm   Sergey Matveychuk   02 Aug 2006 15:23:59 
 Re: netdisco под FreeBSD 6.1 - ошибка perl - виноват SNMP.pm из net-snm   Constantin Stefanov   02 Aug 2006 15:40:06 
Архивное /ru.unix.bsd/6577b1d8a79b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional