pysnmp 命令响应程序 - 处理托管对象值类

问题描述 投票:0回答:1

我正在根据 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))
python snmp pysnmp
1个回答
0
投票

SNMP 中没有原生浮点类型,并且您无法向协议添加全新的类型。但是您可以对现有类型施加额外的约束或通过 TEXTUAL-CONVENTION 修改值表示。

要表示浮点数,您有两种选择:

无论 MIB 中定义什么值,它们始终基于某些内置 SNMP 类型。

您可以使用 pysmi 工具从 ASN.1 MIB 自动生成 pysnmp MibScalar 类,然后您可以使用一些特定于系统的代码手动添加 MibScalarInstance 类,从而将 pysnmp 链接到您的数据源(如文本文件)。

© www.soinside.com 2019 - 2024. All rights reserved.