有关SNMP get的查询

时间:2012-11-14 05:50:44

标签: net-snmp

最近我们正在为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是所有人的标量。

提前感谢你们

1 个答案:

答案 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应该包含这些信息。

解释可能如下:

  • *。1.1 = 1 - 实体索引1
  • 的id = 1的数据列
  • *。2.1 =“getSystemMemoryUsage.sh” - 表示脚本名称的实体索引1的id = 2的数据列(STRING语法)
  • *。3.1 =“/ opt / navios / plugin / fetch_scripts / System / getSystemMemoryUsage.sh” - 实体索引1的id = 3的数据列,表示完整脚本的路径(STRING语法)
  • *。100.1 = 0 - 实体索引1的id = 100的数据列,表示某个INTEGER值 等等...

如果MIB设计者希望将来在.3和.100之间添加一些列,则列索引(.1,.2,.3,.100,。101 ...)可能会包含间隙。或者只是实体索引1不支持这些列(如果它们在MIB中定义)。允许跳过空列。

如果您想了解标量和柱状物体之间的差异,请参阅RFC1212