使用net-snmp进行OID寻址

时间:2016-11-28 14:51:28

标签: snmp net-snmp

我正在使用自行开发的MIB文件扩展我的snmp代理。 我注意到的是,当我散步时,它会将我的变量打印为

MY-MIB::myvariable.0

但我特意将变量放在OID处,该OID不会以0结尾。

我正在使用net-snmp库函数:

netsnmp_create_handler_registration

以及

netsnmp_register_read_only_ulong_instance

注册我的实例。

netsnmp_create_handler_registration似乎只会发生这种情况。但是当我将reg_oid_len指定为较短时,它会双重注册一些变量。

1 个答案:

答案 0 :(得分:2)

我假设您的问题是'为什么0附加到我的OID?' 要访问任何标量值,您必须将.0附加到树的叶节点。如果您尝试寻址表条目,则需要将条目的索引附加到表中。如果你没有使用OID作为诸如bulkget或walk之类的参数,那么在标量上不使用.0通常会引起问题,即

$ snmpget -v2c -c public 192.168.1.120 1.3.6.1.2.1.1.1.0
  SNMPv2-MIB::sysDescr.0 = STRING: things, stuff

$ snmpget -v2c -c public 192.168.1.120 1.3.6.1.2.1.1.1  
  SNMPv2-MIB::sysDescr = No Such Instance currently exists at this OID

$ snmpwalk -v2c -c public 192.168.1.120 1.3.6.1.2.1.1.1
  SNMPv2-MIB::sysDescr.0 = STRING: things, stuff

请参阅this net-snmp邮件列表条目,详细了解标量为何以0结尾的原因。