PySNMP unicode 支持

PySNMP unicode support

PySNMP 是否支持 Unicode 发送 snmptrap。我发送了带有 unicode 字符的陷阱,但我得到的结果是十六进制。是否有任何解决方法来获取 Unicode 中的值。例如这是我的 snmp 陷阱命令

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 "विवेक सुवेदी"

但是在“विवेकसुवेदी”的位置,我得到了0xe0a4b5e0a4bfe0a4b5e0a587e0a49520e0a4b8e0a581e0a4b5e0a587e0a4a6e0a=580]

.有没有办法获取unicode?

AFAIK,要正确呈现 UTF-8 字符串,MIB 对象 (1.3.6.1.4.1.9.9.599.1.3.1.1.1.0) 应输入为具有 DISPLAY-STRING="255t" 的文本约定表示 UTF-8 字符串。

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

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

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

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