我正在用pysnmp开发一个命令响应程序,基于 http://pysnmp.sourceforge.net/examples/current/v3arch/agent/cmdrsp/v2c-custom-scalar-mib-objects.html
我的目的是通过从文本文件中读取snmp数据(随着时间的推移而更新)来响应托管对象的get消息。在
我使用snmpB轮询响应程序,绘制被轮询对象值演变的图表。在
我成功地修改了导出第一个托管对象的示例,并使用mibBuilder.exportSymbols()并在修改后的getvalue方法中从txt文件中检索值。我能成功地调查这个对象。它是一个Counter32类型的对象。在
下一步是使用不同于Integer32、Counter32、OctetString等“受支持”类的值类型来处理其他对象
我需要处理MIB文件中定义的浮点值或其他特定的数据格式,因为snmpB需要这些特定的格式来正确地绘制图形。 不幸的是,我想不出办法来做这件事。在
希望有人能帮忙
马克
编辑1
我需要实现的文本约定是在FLOAT-TC-MIB中从RFC6340定义的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中没有本机浮点类型,您不能向协议中添加全新的类型。但是,您可以对现有类型设置附加约束,或者通过文本约定修改值表示。
要表示浮点数,有两个选项:
无论MIB中定义了什么值,它们总是基于某种内置的SNMP类型。
您可以使用pysmi工具从您的ASN.1mib自动生成pysnmpmibscalator类,然后您可以使用一些系统特定代码手动添加MibScalarInstance类,从而将pysnmp链接到数据源(如文本文件)。
相关问题 更多 >
编程相关推荐