【问题标题】:SNMP4J - OID Output Options - Hex-STRING as STRINGSNMP4J - OID 输出选项 - 十六进制字符串作为字符串
【发布时间】:2014-03-21 12:40:16
【问题描述】:

我正在使用 SNMP4J 读取带有 SNMP 的设备信息。现在我发现了一些将系统名称(OID iso.3.6.1.2.1.1.5.0)表示为十六进制字符串而不是字符串的设备。

为了显示系统名称,我使用以下代码:

Variable var = response.getVariable(new OID(".1.3.6.1.2.1.1.5.0"));
System.out.println(var.toString());

其中 response 是一个 PDU 对象。

如果系统名称表示为 STRING 值,这符合我的预期。当它表示为 Hex-STRING 时,它只打印 Hex 值。

示例:
取系统名称为“SYSTEM NAME”。
使用 STRING,它会打印“系统名称”。
使用 Hex-STRING 打印“53:59:53:54:45:4d:20:4e:41:4d:45”

现在在命令行中使用 snmpwalk 我可以使用 -Oa 标志。这使得所有 Hex-STRING 值都显示为 STRING。是否可以在 SNMP4J 中使用此标志或有类似的选项?

【问题讨论】:

    标签: snmp snmp4j


    【解决方案1】:

    我不确定您从哪里得到“Hex-STRING”一词。 SNMP 没有定义这样的数据类型。我建议您阅读相关的 RFC 文档,它们可从 IETF 公开获得。 SNMP (http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#References) 的维基百科文章有一个很好的参考列表,您可以从浏览标记为“STD”的文章开始。

    在 SNMP 中,所有字符串都是 OCTET-STRING 的子类型(或者用不同的词,“限制”),OCTET-STRING 是一个不确定长度的字节字符串。它可能包含任何数据,甚至是不可打印的东西,代表 jpeg 图像或其他任何东西。

    已经定义了一些文本约定,将数据限制在某个特定的字节范围或长度。 DisplayString 被定义为仅包含 NVT ASCII 字符集中的字节,因此用户可以相信它是可打印的。

    事实上,sysName 被定义为一个最大长度为 255 个字符的 DisplayString。

    sysName OBJECT-TYPE
                  SYNTAX  DisplayString (SIZE (0..255))
    

    由于一个好的 SNMP 管理器知道 RFC1213-MIB,它定义了 sysName 和 DisplayString,管理器应该假设接收到的数据是可打印的 ASCII 字符。

    当您说“当它表示为十六进制字符串时”,您是什么意思? “代表”在哪里、在代理上、在您的 Java 代码中或在使用 net-snmp “snmpwalk”命令时?

    var.toString() 调用应该将变量的内容转换为可以在终端中安全打印的内容,因此 SNMP4j 可能会将任何二进制字符串转换为十六进制字符串。

    【讨论】:

    • 感谢您的回复。使用 net-snmp "snmpwalk" 命令时,我看到了 Hex-STRING。我确定设备的 sysName 只包含可打印的 ASCII 字符,所以我不明白为什么这个设备将 sysName 返回为十六进制。当使用带有“snmpwalk”命令的 -Oa 选项时,它会返回一个可读的字符串,所以我想知道 SNMP4J 中是否有这样的选项。
    • "snmpwalk" 的 -O 标志只会影响 "snmpwalk" 格式化其打印输出的方式。在网络上传输的数据仍然具有相同的二进制格式。 “snmpwalk”这样非常有帮助。因此,在您的 SNMP4j 代码中,如果您想将字符串作为 ASCII 处理,您可以这样做。只需调用“toString()”,它应该默认工作,只要内容实际上是可打印的。如果要将其打印为十六进制字符串,则必须进行一些转换,可能会遍历字符串的字节并将每个字节转换为一对十六进制数字。
    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 2014-03-07
    • 2019-07-27
    • 2010-10-04
    • 1970-01-01
    • 2018-01-31
    • 2020-11-07
    相关资源
    最近更新 更多