Как мой Perl-скрипт может получать прерывания SNMP от управляемой системы? - PullRequest
2 голосов
/ 15 декабря 2010

Я хотел бы сделать следующее, но я не уверен, что использую лучший метод:

Perl-скрипт, работающий на машине Sparc / Solaris 10, должен ожидать входящих пакетов SNMP-ловушек (например, на порту 162). Когда он получает ловушку, он должен декодировать ее и выполнить некоторую обработку, а затем возобновить ожидание следующей ловушки.

Я посмотрел на Net :: SNMP Дэвида М. Тауна, но думаю, что он позволяет только отправлять запросы и получать ответы. Я не могу найти метод для ожидания спонтанных сообщений о ловушках в этой документации: http://search.cpan.org/dist/Net-SNMP/lib/Net/SNMP.pm

С другой стороны, пакет Net-SNMP выглядит очень надежной и хорошо используемой библиотекой, но даже там документация не дает мне четкого пути. SNMP :: TrapSession позволяет мне отправлять ловушки, но не получать их (?).

Некоторые поиски в Google приводят меня к выводу, что мне следует использовать двоичный файл snmptrapd и использовать его встроенные функции perl, чтобы вызывать мой скрипт, когда snmptrapd получает сообщение. Это может сработать, но будет непрактично, поскольку для встроенного параметра perl требуется двоичный файл perl, скомпилированный без поддержки больших файлов. Я не являюсь владельцем целевой системы и, следовательно, не могу заменить компилятор / интерпретатор. Я мог бы поставлять свое программное обеспечение со специально скомпилированным Perl, но это привело бы к кросс-платформенным проблемам, которых я надеялся избежать.

Причина, по которой я использую Perl, а не Java с SNMP4J или аналогичным, заключается в том, что у меня есть устаревший код perl, который ранее зависел от perl API HP NNM, и мне нужно перейти на серверную часть свободного программного обеспечения для устранения Стоимость лицензии.

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Простой пример использования библиотеки Perl SNMP_Session.pm для анализа прерываний SNMP: Essential SNMP - стр. 194 .

2 голосов
/ 16 декабря 2010

Если вы получаете библиотеку SNMP_Session (которая полностью основана на Perl), вы можете делать такие вещи:

my $trap_session = SNMPv1_Session->open_trap_session ();
my ($trap, $sender_addr, $sender_port) = $trap_session->receive_trap ();
my @blah = $trap_session->decode_trap_request ($trap)
2 голосов
/ 15 декабря 2010

Вы ищете библиотечную процедуру для получения и синтаксического анализа пакета? Можете ли вы прослушать UDP-пакеты самостоятельно, а затем передать полученные пакеты в библиотеку snmp для их анализа? Это то, что я делаю, хотя я использую Python, а не Perl.

...