无法创建snmpv3会话并发送snmpv3陷阱

时间:2017-11-14 13:46:42

标签: perl snmp net-snmp snmp-trap

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' ],
);

请建议我为什么会收到此错误。

1 个答案:

答案 0 :(得分:0)

就SNMPv3而言,我在你的代码片段中看到了一些缺少的字段。

我怀疑为什么Net::SNMP没有v3连接的安全级别字段。安全性有三个级别 - noAuthnoPrivauthNoPrivauthPriv。根据这些级别,可以形成SNMPv3连接请求。

首先,在您的连接请求中,您只有身份验证相关信息,而不涉及隐私协议/隐私密钥。其次,我建议您使用版本值snmpv3而不是3

对于陷阱部分,似乎发送方必须是权威的SNMP引擎 - Net :: SNMP模块尚不支持。引自以下Net::SNMP

  

snmpv2_trap() - 将SNMP snmpV2陷阱发送到远程管理器
  注意:此方法只能在对象的版本中使用   设置为SNMPv2c。 SNMPv3支持SNMPv2-Trap-PDU,但需要   消息的发送者是一个权威的SNMP引擎   Net :: SNMP模块目前不支持。