我想做以下事情,但我不确定我是否使用了最好的方法:
在 Sparc/Solaris 10 机器上运行的 perl 脚本应该等待传入的 SNMP 陷阱数据包(例如在端口 162 上)。当它收到一个陷阱时,它应该对其进行解码并对其进行一些处理,然后继续等待下一个陷阱。
我研究过 David M. Town 的 Net::SNMP,但我认为它只允许发送请求和接收响应。我在本文档中找不到等待自发陷阱消息的方法: http ://search.cpan.org/dist/Net-SNMP/lib/Net/SNMP.pm
另一方面,Net-SNMP 包似乎是一个非常健壮且使用良好的库,但即使在那里,文档也没有为我提供清晰的路径。SNMP::TrapSession 允许我发送陷阱,但不接收它们(?)。
一些谷歌搜索让我建议我应该使用“snmptrapd”二进制文件并使用它的嵌入式 perl 函数,以便在 snmptrapd 收到消息时调用我的脚本。这可以工作,但不切实际,因为嵌入式 perl 选项需要在没有大文件支持的情况下编译的 perl 二进制文件。我不拥有目标系统,因此无法替换编译器/解释器。我可以使用专门编译的 perl 来发布我的软件,但这会给我带来我希望避免的跨平台问题。
我使用 Perl 而不是 Java 与 SNMP4J 或类似的原因是,我有以前依赖于 HP NNM 的 perl API 的旧版 perl 代码,我需要迁移到免费软件后端以消除许可证成本。