我正在开发一个基于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
我需要实现的文本约定是来自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))
答案 0 :(得分:0)
SNMP中没有本机浮点类型,您无法向协议添加全新的类型。但是您可以通过TEXTUAL-CONVENTION对现有类型添加其他约束或修改值表示。
要表示浮点数,您有两个选项:
无论在MIB中定义了什么值,它们总是基于一些内置的SNMP类型。
您可以使用pysmi工具从ASN.1 MIB自动生成pysnmp MibScalar 类,然后您可以手动添加具有特定系统功能的 MibScalarInstance 类代码因此将pysnmp链接到您的数据源(如文本文件)。