最近我们正在为NMS系统制作MIB文件,而这样做我发现在Linux机器上部署MIB后查询它我需要在最后添加101.1,而标准Linux mib只需要.0需要附加。我无法理解为什么我的值在101.1中返回而不是.0。
例如,当我使用linux MIB执行此操作时,我得到了值
snmpget -v 2c -c public localhost 1.3.6.1.2.1.1.3.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (105543) 0:17:35.43
但是为了让我的mib工作,我需要追加101.1
snmpwalk -v 2c localhost -c public .1.3.6.1.4.1.****.1.2.3.101.1
SNMPv2-SMI::enterprises.****.1.2.3.101.1 = STRING: "388 MB"
当我使用我的MIB散步时,我得到以下内容。
snmpwalk -v 2c localhost -c public .1.3.6.1.4.1.****.1.2.3
SNMPv2-SMI::enterprises.****.1.2.3.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.****.1.2.3.2.1 = STRING: "getSystemMemoryUsage.sh"
SNMPv2-SMI::enterprises.****.1.2.3.3.1 = STRING:
"/opt/nagios/plugins/fetch_scripts/System/getSystemMemoryUsage.sh"
SNMPv2-SMI::enterprises.****.1.2.3.100.1 = INTEGER: 0
SNMPv2-SMI::enterprises.****.1.2.3.101.1 = STRING: "388 MB"
SNMPv2-SMI::enterprises.****.1.2.3.102.1 = INTEGER: 0
SNMPv2-SMI::enterprises.****.1.2.3.103.1 = ""
任何人都可以在我们的MIB中提出这样的行为以及需要做什么,以便我的MIB表现得像Linux Mibs,我只是在最后添加.0并获得价值。 OBJECT TYPE是所有人的标量。
提前感谢你们
答案 0 :(得分:4)
MIB命名法支持表格行和非表格标量表示的数据。使用OID.0索引访问作为标量显示的数据。 “.0”部分表示对标量对象的访问 - 系统中的单个对象实例。这些表包含列(每列代表某种数据)和行(每行代表一个表实例 - 某种实体支持该表)。
在您的示例中,您尝试访问Enterprise MIB中的某个表。该表包含索引(可能有单个或多个索引的MIB表)。要确定该表中的第一个可用索引,可以通过以下方式启动snmpgetnext命令:
snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3
或
snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3.0
或
snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3.0.0
正如您所看到的,所有上述命令都通过更新两个最后的OID部分(.0.0)为您提供第一个现有行实例。这两个OID不必明确指定,因此您可以只使用一个空索引(.0),甚至根本不必指定它们。
要了解如何描述这些表的索引,您需要引用您的Enterprise MIB - 查找此OID描述的表:.1.3.6.1.4.1。 * *。1.2.3并了解索引方案以及这些索引代表什么。写得很好的MIB应该包含这些信息。
解释可能如下:
如果MIB设计者希望将来在.3和.100之间添加一些列,则列索引(.1,.2,.3,.100,。101 ...)可能会包含间隙。或者只是实体索引1不支持这些列(如果它们在MIB中定义)。允许跳过空列。
如果您想了解标量和柱状物体之间的差异,请参阅RFC1212。