PySNMP unicode支持

时间:2015-10-09 09:10:51

标签: snmp pysnmp

PySNMP是否支持使用Unicode发送snmptrap。我发送了带有unicode字符的陷阱但是我得到的结果是十六进制。是否有任何工作来获得Unicode的价值。例如这是我的snmp trap命令

  

sudo snmptrap -v2c -c public 192.168.2.162'' .1.2.3.4.5.6.7.8.9   ifIndex i 2 ifAdminStatus i 1 1.3.6.1.4.1.9.9.599.1.3.1.1.1.0 s"विवेक   सुवेदी"

但在"विवेकसुवेदी"的地方,我得到了 0xe0a4b5e0a4bfe0a4b5e0a587e0a49520e0a4b8e0a581e0a4b5e0a587e0a4a6e0a580 。有没有办法获得unicode?

1 个答案:

答案 0 :(得分:1)

AFAIK,为了正确呈现UTF-8字符串,应将MIB对象(1.3.6.1.4.1.9.9.599.1.3.1.1.1.0)键入为具有DISPLAY-STRING =" 255t&的某些TEXTUAL-CONVENTION #34;表示UTF-8字符串。

如果不是这种情况,SNMP会将其视为二进制字符串,并且不会尝试正确呈现它。如果不使用MIB解析(将纯ASN.1 / SNMP类型转换为MIB定义的子类型)并处理纯ASN.1对象,也会发生同样的情况。

在后一种情况下,一个黑客的解决方案是跳过.prettyPrint() - 通过SNMP的值并通过.asOctets原样使用它们:

>>> print(OctetString(u'кириллица'.encode('utf-8')).asOctets())
кириллица

这里的问题是您可能必须以编程方式将此逻辑应用于特定的OID - 这就是MIB的设计目标。 ;)