1
|
Luiz Fernando Schrickte · 技术社区 · 7 年前 |
![]() |
1
1
我想我已经发现了创建新行的问题。 原始(ASN.1)mib文件将所有RowStatus列定义为 读写操作 ,但如果没有符号访问权限,则pysnmp MibTableColumn createTest方法将失败 读取创建 . 更改MIB源上的行状态定义解决了此问题。 这样做之后,我可以创建新行,但注意到另一个问题:表上的snmp遍历导致超时。问题是pysnmp不知道在新行元素上放置哪些值,这些新行元素不是索引,也没有定义默认值,因此它不放置任何值,这会导致在ASN上进行“尝试的”\uu hash\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。1架构对象“PyAsn1Error”。为了处理此问题,客户端必须在获取新创建行中的每个字段之前,向其发出SET命令,或向列对象添加默认值(对此不确定,但默认值不是由mibdump作为原始ASN填充的。1 MIB从不定义ITEN的默认值,根据定义,ITEN是非可选的)。下面是我为StaticTable类导出列的代码(代码不完整,但我认为一些方法和属性名称本身就说明了这一点)。
不确定这是不是正确的方法,如果我错了,请纠正我。也许我不应该在这里包括这一点,但这是解决原始问题的一部分,可能会帮助其他人。 谢谢 |
![]() |
2
0
我认为,一般来说,使用SNMP,您无法在不知道表行的索引的情况下远程创建表行。因为索引是传递SNMP代理信息的方式,该行在表中的确切位置。
从技术角度来说
如果我错了,请解释一下这是怎么回事? 另一种情况是,您不是远程创建表行,而是通过SNMP表机制公开SNMP代理中已有的数据。然后,您可以仅从现有数据中构建索引。这不需要SNMP管理器事先知道索引。 如果您的SNMP代理公开了一些信息,SNMP管理器可以使用这些信息为要创建的表行建立适当的索引,那么可能的中间方法就是。 总而言之,我认为讨论会从你的情况中得到更多提示 |