1。无法创建SNMPv3会话
我正在使用NET :: SNMP perl库发送snmpv3陷阱。它与snmpv1和snmpv2工作正常,但我无法发送snmpv3陷阱。我正在使用镁软陷阱振铃器接收陷阱,但我甚至无法创建会话。
创建snmpv3会话的代码:
my ($session, $error) = Net::SNMP->session(
-hostname => 'my_host_name',
-version => '3',
-username => 'user-md5',
-authprotocol => 'md5',
-authpassword => 'abcd1234'
);
此处,用户名是在Mg-soft陷阱振铃器中添加的安全用户名。为什么我无法创建会话。或者请建议我如何接收通过NET :: SNMP库发送的snmpv3陷阱。
2。无法发送SNMPv3陷阱
我能够通过某些陷阱接收器snmp服务器配置为snmpv3创建会话。但是在使用NET :: SNMP库发送陷阱时,我收到以下错误:
必须是用于生成SNMPv2-Trap-PDUdf的权威SNMP引擎
以下是我使用的代码段:
my $OID_sysContact = '1.5.2.9.4.6.6.5.4';
my $result = $session->snmpv2_trap(
-varbindlist => [ $OID_sysContact, OCTET_STRING, 'Help Desk x911' ],
);
请建议我为什么会收到此错误。
答案 0 :(得分:0)
就SNMPv3而言,我在你的代码片段中看到了一些缺少的字段。
我怀疑为什么Net::SNMP
没有v3连接的安全级别字段。安全性有三个级别 - noAuthnoPriv
,authNoPriv
和authPriv
。根据这些级别,可以形成SNMPv3连接请求。
首先,在您的连接请求中,您只有身份验证相关信息,而不涉及隐私协议/隐私密钥。其次,我建议您使用版本值snmpv3
而不是3
。
对于陷阱部分,似乎发送方必须是权威的SNMP引擎 - Net :: SNMP模块尚不支持。引自以下Net::SNMP
snmpv2_trap() - 将SNMP snmpV2陷阱发送到远程管理器
注意:此方法只能在对象的版本中使用 设置为SNMPv2c。 SNMPv3支持SNMPv2-Trap-PDU,但需要 消息的发送者是一个权威的SNMP引擎 Net :: SNMP模块目前不支持。