Snmp++是一套强大的网络管理应用开发包。它提供了Snmp网管协议所描述的所有命令,并且提供SMI数据类型的解析。MIB数据包含普通数据和表数据。在提取表数据时,由于表项的数量和Oid都不确定,所以不能通过某个特定的Oid直接获得取值。通常,关于Snmp的书上都会介绍使用GetNext命令来实现表的遍历,这种方法比较简单,这里主要讨论该算法的原理和如何用Snmp++实现。
MIB表是通过行和列来描述的。其中列表头是各个表项的原始Oid,而行表头则是index。这样以来一个Oid和一个index就唯一地确定了表中的一项。比如在接口表中,ifDescr(Oid为1.3.6.1.2.1.2.2.1.2)为一列,而具体对于某一个接口则为一行。这样,某一具体表项的Oid就表示为:列Oid+index的形式。下图形象地描述了一张表的格式。
ifIndex 1.3.6.1.2.1.2.2.1.1 |
ifDescr 1.3.6.1.2.1.2.2.1.2 |
ifType 1.3.6.1.2.1.2.2.1.3 |
ifMtu 1.3.6.1.2.1.2.2.1.4 |
Ifspeed 1.3.6.1.2.1.2.2.1.5 |
|
Index0 |
xxx |
xxx |
xxx |
xxx |