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 的设计目的。 ;)
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 的设计目的。 ;)