使用Perl(net snmp)发送陷阱
我运行snmptrapd,当通过snmptrap发送陷阱时,可以看到传入的陷阱使用Perl(net snmp)发送陷阱,perl,snmp,net-snmp,snmp-trap,Perl,Snmp,Net Snmp,Snmp Trap,我运行snmptrapd,当通过snmptrap发送陷阱时,可以看到传入的陷阱 snmptrap -c public -v 2c localhost "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "Aliens here" 但当通过Perl脚本发送时,我没有陷阱 use SNMP; $sess = new SNMP::Session(DestHost => '127.0.0.1', RemotePort => "162" ); $sess->tra
snmptrap -c public -v 2c localhost "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "Aliens here"
但当通过Perl脚本发送时,我没有陷阱
use SNMP;
$sess = new SNMP::Session(DestHost => '127.0.0.1', RemotePort => "162" );
$sess->trap(enterprise=>'.1.3.6.1.4.1.2021', # or 'ucdavis' [default]
agent => '127.0.0.1', # or 'localhost',[dflt 1st intf on host]
generic => specific, # can be omitted if 'specific' supplied
specific => 5, # can be omitted if 'generic' supplied
uptime => 1234, # dflt to localhost uptime (0 on win32)
[[ifIndex, 1, 1],[sysLocation, 0, "here"]]);
怎么了?您的第二个版本,即perl版本,与第一个版本不同,它没有指定社区或版本。尝试添加它们
$sess = new SNMP::Session(DestHost => '127.0.0.1',
RemotePort => "162",
Community => "public,
Version => 2);
也看到
用于SNMP::会话使用 我不熟悉SNMP陷阱,但是您的
snmptrap
看起来与您的perl等价物不一样,RemotePort
在哪里,以及.1.3.6.1.4.1.2021
与1.3.3.3.3.3.3.1.2.2
的关系如何?在第一个snmptrap中,默认的目标端口是162,所以不要认为这个问题,提问者说第一个好。另外,不同的OID.1.3.6.1.4.1.2021与1.3.3.3.3.3.3.3 1.2.2.2不应该(!)有什么关系,这看起来是一个更基本的通信问题。使用Wireshark或tcpdump
之类的工具,检查传出接口的通信量,看看数据包是否真的发送了。如果是,检查是否到达接收端。