我想做以下事情,但我不确定我用的是不是最好的方法:
在Sparc/Solaris 10机器上运行的perl脚本应该等待传入的SNMP陷阱数据包(例如,在端口162上)。当它接收到陷阱时,它应该对其进行解码并对其进行一些处理,然后继续等待下一个陷阱。
我研究过David M.City的Net::SNMP,但我认为它只允许发送请求和接收响应。我在这个文档中找不到等待自发陷阱消息的方法:http://search.cpan.org/dist/Net-SNMP/lib/Net/SNMP.pm
另一方面,Net-SNMP包似乎是一个非常健壮且使用良好的库,但即使在那里,文档也没有为我提供清晰的路径。SNMP::TrapSession允许我发送陷阱,但不能接收它们(?)。
通过谷歌搜索,我建议我应该使用" snmptrapd“二进制文件,并使用其嵌入的perl函数,以便在snmptrapd收到消息时调用我的脚本。这是可行的,但并不实用,因为embedded perl选项需要在没有大文件支持的情况下编译perl二进制文件。我不拥有目标系统,因此不能替换编译器/解释器。我可以将我的软件附带一个专门编译的perl,但这会给我带来一些我希望避免的跨平台问题。
我之所以使用Perl而不是SNMP4J或类似的Java,是因为我有以前依赖于HP NNM的perl API的遗留perl代码,并且我需要转移到自由软件后端以消除许可成本。
发布于 2010-12-16 04:57:35
使用Perl库SNMP_Session.pm解析SNMP陷阱的一个简单示例:Essential SNMP - page 194。
发布于 2010-12-16 00:55:04
您是否正在寻找一个库例程来接收和解析数据包?您能否自己监听UDP数据包,然后将接收到的任何数据包传递到snmp库以对其进行解析?这就是我正在做的事情,尽管我使用的是python而不是perl。
发布于 2010-12-16 07:20:38
如果你得到了SNMP_Session库(完全是Perl btw),你可以这样做:
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)https://stackoverflow.com/questions/4449868
复制相似问题