【问题标题】:PySNMP unicode supportPySNMP Unicode 支持
【发布时间】:2015-10-09 09:10:50
【问题描述】:

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

但是在“विवेक सुवेदी”的地方,我得到了 0xe0a4b5e0a4bfe0a4b5e0a587e0a49520e0a4b8e0a581e0a4b5e0a587e0a4a6e0a580 .有没有办法获取unicode?​​p>

【问题讨论】:

    标签: snmp pysnmp


    【解决方案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 表示UTF-8 字符串。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 2011-04-15
      • 2011-10-16
      • 2014-12-25
      • 2013-05-29
      相关资源
      最近更新 更多