使用 RowStatus 类型设置的 SNMP

Use SNMP set with RowStatus type

我对 RowStatus 类型的工作原理以及我需要传递什么值才能在该行的其他列中设置值感到困惑。从研究来看,我似乎要么执行了错误的操作顺序,要么没有传递正确的值以及 RowStatus 值。

此设备使用 webGUI,我正在使用 SNMP 编写一些大量配置更改的脚本。在 GUI 中,您选中一个框以在行中的单元格变为活动状态之前启用该行,从而允许您输入信息。

以下是行状态在启用之前显示的内容:

snmpwalk -v 2c -c testcomm -m +MY-MIB 172.28.183.150 MY-MIB::mibRowStatus.101.1 MY-MIB::mibRowStatus.101.1 = INTEGER: notInService(2)

无论我尝试仅使用 createAndWait 还是 createAndGo 值来尝试仅启用该行,我都得到了错误的类型。以下是我尝试为每一行发送值以及 createAndWait 值的方法。尝试 createAndGo 时也发生了同样的情况。我做的多个 OID/values 正确吗?

snmpset -v 2c -c testcomm -m +MY-MIB 172.28.183.150 MY-MIB::mibRowStatus.101.1 = createAndWait iso.3.6.1.4.1.xx.101.1 = 1 iso.3.6.1.4.1.xx.101.1 = "test" iso.3.6.1.4.1.xx.101.1 = 15 iso.3.6.1.4.1.xx.101.1 = md6 iso.3.6.1.4.1.xx.101.1 = 6 iso.3.6.1.4.1.xx.101.1 = 4 iso.3.6.1.4.1.xx.101.1 = 7
Error in packet.
Reason: wrongType (The set datatype does not match the data type the agent expects)
Failed object: MY-MIB::mibRowStatus.101.1

如果我销毁该行,它会起作用。

snmpset -v 2c -c testcomm -m +MY-MIB 172.28.183.150 MY-MIB::mibRowStatus.101.1 = destroy
MY-MIB::mibRowStatus.101.1 = INTEGER: destroy(6)

我可以通过 GUI 和 SNMP 设置其余值来启用该行,但这违背了目的。如果我通过 GUI 执行所有操作并执行 snmpwalk,它 returns 处于活动状态 (1)。

供应商 MIB 是这样说的:

mibRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The status of the row.

        The writable columns in a row can not be changed if the row
        is active. All columns must have a valid value before a row
        can be activated. 
        
       "
   ::= { mibEntry 22 }

我终于弄明白了。这些值都需要在发送 RowStatus 之前设置。

例如,我只发送了值:

snmpset -v 2c -c testcomm -m +MY-MIB 172.28.183.150 iso.3.6.1.4.1.xx.101.1 = 1 iso.3.6.1.4.1.xx.101.1 = "test" iso.3.6.1.4.1.xx.101.1 = 15 iso.3.6.1.4.1.xx.101.1 = md6 iso.3.6.1.4.1.xx.101.1 = 6 iso.3.6.1.4.1.xx.101.1 = 4 iso.3.6.1.4.1.xx.101.1 = 7

它设置了它们:

MY-MIB::mibCciEnabled.101.1 = INTEGER: true(1)
MY-MIB::mibMepMaName.101.1 = STRING: test
MY-MIB::mibMepId.101.1 = INTEGER: 15
MY-MIB::mibMepMdName.101.1 = STRING: md6
MY-MIB::mibMepLevel.101.1 = INTEGER: 6
MY-MIB::mibMepCcmInterval.101.1 = INTEGER: interval1s(4)
MY-MIB::mibMepCcmLtmPriority.101.1 = Gauge32: 7

然后必须设置 RowStatus:

snmpset -v 2c -c testcomm -m +OVERTURE-SOAM-MIB 172.28.183.150 MY-MIB::mibRowStatus.101.1 = createAndGo
MY-MIB::mibRowStatus.101.1 = INTEGER: createAndGo(4)