pysnmp 命令响应程序 - 处理托管对象值 类
pysnmp Command Responder - handling managed objects value classes
我正在使用 pysnmp 开发命令响应程序,基于
http://pysnmp.sourceforge.net/examples/current/v3arch/agent/cmdrsp/v2c-custom-scalar-mib-objects.html
我的目的是通过从文本文件(随时间更新)读取 snmp 数据来回答我的托管对象的获取消息。
我正在使用 snmpB 轮询响应者,绘制轮询对象值演变图。
我已成功修改导出我的第一个托管对象的示例,使用 mibBuilder.exportSymbols() 添加它并在修改后的 getvalue 方法中从 txt 文件中检索值。我能够成功地轮询这个对象。它是一个 Counter32 类型的对象。
下一步是处理值类型不同于“支持”类 的其他对象,例如 Integer32、Counter32、OctetString
我需要处理浮点值或 MIB 文件中定义的其他特定数据格式,因为 snmpB 需要这些特定格式才能正确绘制图形。
不幸的是,我想不出办法来做到这一点。
希望有人能帮忙,
马克
编辑 1
我需要实现的文本约定是 FLOAT-TC-MIB 中定义的 Float32TC 来自 RFC6340:
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 修改值表示。
要表示浮点数,您有两种选择:
- 将浮点数编码为八位字节流并将其作为 OCTET STREAM 类型传递 (RFC6340)
- 使用 INTEGER 类型和一些 TEXTUAL-CONVENTION 到 represent integer as float
无论在 MIB 中定义什么值,它们总是基于一些内置的 SNMP 类型。
您可以使用 pysmi 工具从您的 ASN.1 MIB 自动生成 pysnmp MibScalar 类,然后您可以手动添加 MibScalarInstance 类 带有一些特定于系统的代码,从而将 pysnmp 链接到您的数据源(如文本文件)。
我正在使用 pysnmp 开发命令响应程序,基于 http://pysnmp.sourceforge.net/examples/current/v3arch/agent/cmdrsp/v2c-custom-scalar-mib-objects.html
我的目的是通过从文本文件(随时间更新)读取 snmp 数据来回答我的托管对象的获取消息。
我正在使用 snmpB 轮询响应者,绘制轮询对象值演变图。
我已成功修改导出我的第一个托管对象的示例,使用 mibBuilder.exportSymbols() 添加它并在修改后的 getvalue 方法中从 txt 文件中检索值。我能够成功地轮询这个对象。它是一个 Counter32 类型的对象。
下一步是处理值类型不同于“支持”类 的其他对象,例如 Integer32、Counter32、OctetString
我需要处理浮点值或 MIB 文件中定义的其他特定数据格式,因为 snmpB 需要这些特定格式才能正确绘制图形。 不幸的是,我想不出办法来做到这一点。
希望有人能帮忙,
马克
编辑 1
我需要实现的文本约定是 FLOAT-TC-MIB 中定义的 Float32TC 来自 RFC6340:
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 修改值表示。
要表示浮点数,您有两种选择:
- 将浮点数编码为八位字节流并将其作为 OCTET STREAM 类型传递 (RFC6340)
- 使用 INTEGER 类型和一些 TEXTUAL-CONVENTION 到 represent integer as float
无论在 MIB 中定义什么值,它们总是基于一些内置的 SNMP 类型。
您可以使用 pysmi 工具从您的 ASN.1 MIB 自动生成 pysnmp MibScalar 类,然后您可以手动添加 MibScalarInstance 类 带有一些特定于系统的代码,从而将 pysnmp 链接到您的数据源(如文本文件)。