Отправка ловушки с помощью Perl's Net::SNMP

Я пытаюсь отправить ловушку как часть более крупного скрипта Perl. Я скопировал код перехвата в другой файл и запускаю его сам по себе. Похоже, что код считает, что ловушка успешно отправлена, но я не вижу ловушку ни на одной машине, на которой у меня работает прослушиватель ловушек.

Вот код:

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

use Net::SNMP;

#messy hardcoding
my $snmp_target = '192.168.129.50';
#my $snmp_target = '10.200.6.105'; # Server running trap listener
my $enterprise = '1.3.6.1.4.1.27002.1';

my ($sess, $err) = Net::SNMP->session(
    -hostname  => $snmp_target,
    -version => 1, #trap() requires v1
);

if (!defined $sess) {
    print "Error connecting to target ". $snmp_target . ": ". $err;
    next;
}

my @vars = qw();
my $varcounter = 1;

push (@vars, $enterprise . '.' . $varcounter);
push (@vars, OCTET_STRING);
push (@vars, "Test string");

my $result = $sess->trap(
    -varbindlist => \@vars,
    -enterprise => $enterprise,
    -specifictrap => 1,
);

if (! $result)
{
    print "An error occurred sending the trap: " . $sess->error();
}

РЕДАКТИРОВАТЬ: добавлен вызов $sess->debug(255), вот результат:

debug: [440] Net::SNMP::Dispatcher::_event_insert(): created new head and tail [ARRAY(0x1af1fea8)]
debug: [687] Net::SNMP::Message::send(): transport address 192.168.129.50:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 70 bytes
[0000]  30 44 02 01  00 04 06 70  75 62 6C 69  63 A4 37 06   0D.....public.7.
[0016]  09 2B 06 01  04 01 81 D2  7A 01 40 04  C0 A8 81 85   .+......z.@.....
[0032]  02 01 06 02  01 01 43 01  00 30 1B 30  19 06 0A 2B   ......C..0.0...+
[0048]  06 01 04 01  81 D2 7A 01  01 04 0B 54  65 73 74 20   ......z....Test 
[0064]  73 74 72 69  6E 67                                   string
debug: [517] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x1af1fea8)], list is now empty

РЕДАКТИРОВАТЬ: Может ли кто-нибудь запустить прослушиватель ловушек, попробовать этот код на своей машине и сообщить мне, работает ли он?

РЕДАКТИРОВАТЬ: Пробовал с моего MBP. Тот же результат. Затем заметил, что в отладочной информации написано, что она отправляет на порт 161. Принудительно параметр -port => 162, и он работает. Это оставляет меня с парой вопросов:

  1. Почему отправитель ловушки по умолчанию имеет номер 161?
  2. Я получаю эту ошибку при запуске с включенной отладкой. Что это означает?

    ошибка: [97] Net::SNMP::Transport::IPv4::UDP::agent_addr(): Не удалось отключиться: семейство адресов не поддерживается семейством протоколов


person coding_hero    schedule 20.06.2012    source источник
comment
Можете ли вы понюхать сетевой трафик, чтобы проверить, что он действительно отправляет? Может быть, проблема на другой стороне или маршрутизация отправляет ее куда-то неожиданно? Вы также можете попробовать включить режим отладки с $sess->debug(255) в сеансе.   -  person Oleg V. Volkov    schedule 21.06.2012
comment
Из отладки похоже на его отправку. Я добавлю вывод выше.   -  person coding_hero    schedule 21.06.2012
comment
Работает ли отправка ловушки с помощью snmptrap? Я думаю, что многие серверы не принимают ловушку v1.   -  person J-16 SDiZ    schedule 21.06.2012
comment
Подтверждено, отправка ловушки v1 с snmptrap работает.   -  person coding_hero    schedule 21.06.2012


Ответы (1)


Исправлено путем изменения параметра «Порт» со 161 по умолчанию на 162.

person coding_hero    schedule 28.06.2012