如何使用snmpset在MIB表中添加行?

lzd*_*zdt 5 snmp mib net-snmp

我最近更改了我的自定义 MIB 文件以包含表,而不仅仅是标量,它会验证,我可以创建子代理等,但是如果我尝试阅读它,它会说没有条目:

snmptable -v1 -c public hostname:10161 myMibName::myTable
myMibName::myTable: No entries
Run Code Online (Sandbox Code Playgroud)

好吧,我没有在我的代理代码中向该表添加任何默认/示例行。

如果我尝试使用 snmpset 设置表的某些值,就像我在标量上所做的那样,它总是失败,因此表需要自己的语法。

如何使用 snmpset 或类似内容向表中添加一行?

例如,示例表可能看起来如此简单,其中 'myString' 是索引:

MyTableEntrySequence::= SEQUENCE {
myString
OCTET STRING,
test1
Integer32,
test2
Integer32
Run Code Online (Sandbox Code Playgroud)

}

编辑:我没有在我的表中使用 RowStatus。我是否需要使用 RowStatus 才能添加新行?

EDIT2:我已经从 net-snmp 样本编译了 data_set.c 代理,它用一些数据填充样本表,并可以使用 snmptable 查询其内容:

snmpwalk -v 1 -c public hostname:10161 netSnmpIETFWGTable
NET-SNMP-EXAMPLES-MIB::nsIETFWGChair1."snmpv3" = STRING: "Russ Mundy"
NET-SNMP-EXAMPLES-MIB::nsIETFWGChair2."snmpv3" = STRING: "David Harrington"
Run Code Online (Sandbox Code Playgroud)

lzd*_*zdt 3

假设表 ( myTable) 包含一个字符串 ( stringIndex) 和 2 个整数 (test1test2),而第一个表列也是表索引,您可以添加以下行:

snmpset -v 1 -c public hostname:10161 yourMibName::test1.\"testString\" = 365

这会添加一个新的表行,其中

stringIndex = "testString"
test1 = 365
test2 = 0
Run Code Online (Sandbox Code Playgroud)

要将 test2 设置为 42,您需要调用:

snmpset -v 1 -c public hostname:10161 yourMibName::test2.\"testString\" = 42

要验证表内容,您可以使用 snmpwalk 或 snmptable:

snmpwalk -v 1 -c public hostname:10161 yourMibName::myTable
Run Code Online (Sandbox Code Playgroud)