我正在根据 pysnmp 的文档开发命令响应程序。
我的目的是通过从文本文件中读取 snmp 数据(随时间更新)来回答我的托管对象的获取消息。
我正在使用 snmpB 轮询响应者,绘制轮询对象值演变的图表。
我已成功修改导出第一个托管对象的示例,将其添加到 mibBuilder.exportSymbols() 并在修改后的 getvalue 方法中从 txt 文件中检索值。我能够成功轮询该对象。它是一个 Counter32 类型的对象。
下一步是处理值类型不同于“受支持”类(如 Integer32、Counter32、OctetString)的其他对象
我需要处理 MIB 文件中定义的浮点值或其他特定数据格式,因为 snmpB 需要这些特定格式才能正确绘制图形。 不幸的是我想不出办法来做到这一点。
希望有人能帮忙,
马克
编辑1
我需要实现的文本约定是来自RFC6340的FLOAT-TC-MIB中定义的Float32TC:
Float32TC ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION "This type represents a 32-bit (4-octet) IEEE
floating-point number in binary interchange format."
REFERENCE "IEEE Standard for Floating-Point Arithmetic,
Standard 754-2008"
SYNTAX OCTET STRING (SIZE(4))
SNMP 中没有原生浮点类型,并且您无法向协议添加全新的类型。但是您可以对现有类型施加额外的约束或通过 TEXTUAL-CONVENTION 修改值表示。
要表示浮点数,您有两种选择:
无论 MIB 中定义什么值,它们始终基于某些内置 SNMP 类型。
您可以使用 pysmi 工具从 ASN.1 MIB 自动生成 pysnmp MibScalar 类,然后您可以使用一些特定于系统的代码手动添加 MibScalarInstance 类,从而将 pysnmp 链接到您的数据源(如文本文件)。