如何使用Net-SNMP从MIB文件中获取实际的SNMPGet-OID?

时间:2017-08-08 13:26:32

标签: snmp net-snmp

我注意到在某些情况下,实际的OID在MIB名称中添加了额外的.0或.1或.2,但是,这并不是一直发生的。使用非常常见的SysName示例。 Net-SNMP的SNMPTranslate和MIB浏览器将SysName的OID显示为" .1.3.6.1.2.1.1.5"。

enter image description here enter image description here

但是,实际的SysName OID是" .1.3.6.1.2.1.1.5.0"好像我要在" .1.3.6.1.2.1.1.5"上发出一个SNMPGet,它就会失败。

OID SysName是1.3.6.1.2.1.1.5.0还是1.3.6.1.2.1.1.5?

为了增加混乱,总是需要尾随0或1。

1 个答案:

答案 0 :(得分:1)

SNMP中的托管对象有两种类型:标量对象和表格对象。

始终具有单个实例的托管对象称为标量对象。另一方面,表格对象具有多个实例,例如表的行。例如, MIB II 系统组有七个" leaf"它下的变量。这些对象中的每一个都是标量对象。例如, sysUpTime 的值是自系统的网络管理软件(SNMP代理)重新初始化以来的持续时间,以百分之一秒为单位。 标量对象的OID以.0结尾。

Object Name:        sysUpTime
Object ID:      1.3.6.1.2.1.1.3.0
Object Syntax:      TimeTicks
Object Access:      read-only
Object Status:      mandatory
Object Description:  The time (in hundredths of a second) since the
             network management portion of the system was last
             re-initialized.

SNMP中的表是二维对象,定义为名为SEQUENCE OF的ASN.1类型。序列的每个元素都是表中的一个条目(行),它本身就是一系列标量值的对象。 SNMP不允许将表嵌套在表中。

例如,MIB II 接口组只包含一个表格对象 ifTable ,其中每个网络接口包含一行。表中的每一行都是对象 ifEntry 的实例。每行包含标量值叶对象 IfIndex ifDescr 等的实例。叶对象称为列对象,因为每个此类对象的实例构成表中的一列。虽然这些对象具有标量值实例,但它们不是标量对象,因为它们可以有多个实例。