1 回答
TA贡献1877条经验 获得超6个赞
代理如何创建/存储这些数据?是使用后缀“.97.98.99”创建的通用标量对象,还是此信息以某种方式与 exampleTableColumn2 的实例相关联?
这是与类型为 的对象树(MIB 树)中OctetString
的叶节点关联的类型的通用标量值。在 MIB 树中,您会发现一些节点类型,每个都表现出不同的行为(请参阅文档字符串),但除此之外它们非常相似。每个节点都由一个 OID 标识。MibTableColumn
如果我随后在我们刚刚创建的对象上运行 snmpget 或 snmpset 命令,在框架的眼中我将与什么进行交互?
负责您正在查询的 OID 的 MIB 树对象将接收read*(对于 SNMP GET)或read*Next(对于 SNMP GETNEXT/GETBULK)事件,它应该以一个值响应这些事件。
在现实世界的实现中,代理实际上会查询设备以在某个内部表中创建一个新条目,并且您需要具有修改的 readGet/writeCommit 方法的自定义标量对象
有几种方法可以解决这个问题,到目前为止我一直在追求的方法是覆盖其中的一些read*
//方法来从read*Next
/write*
向其最终源(您的内部表)读取或写入值。
为了简化代码并使您的代码与您正在实现的 MIB 保持同步,pysmi 库可以通过 Jinja2模板将 MIB 转换为带有存根的 Python 代码。只要 SNMP 请求触发读取或写入事件,您就可以从这些存根访问您的内部表。您可以将自定义代码放入这些存根和/或生成这些存根的 Jinja2 模板中。
作为实现您自己的 SNMP 代理的替代方法,您可以考虑使用这个由相同技术驱动的通用工具。
添加回答
举报