使用 net-snmp 寻址 OID

OID addressing with net-snmp

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

MY-MIB::myvariable.0

但我特意将变量放在了一个不以 0 结尾的 OID 上。

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

netsnmp_create_handler_registration

还有

netsnmp_register_read_only_ulong_instance

注册我的实例。

它似乎只发生在 netsnmp_create_handler_registration。但是当我指定 reg_oid_len 更短时,它会双重注册一些变量。

假设你的问题是 'Why is a 0 appended to my OID?' 为了访问任何 scalar 值,您必须将 .0 附加到树的叶节点。如果您尝试寻址 table 条目,则需要将条目的索引附加到 table。如果您不使用 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 结尾的更明确的详细信息。