BITS 数据类型的 HEX STRING 表示是什么?

问题描述 投票:0回答:3

如何将BITS数据类型转换为HEX STRING数据类型? (如

0x80
HEX STRING
分别代表(0)、(1)、(2)
BITS
? DEFVAL 为
'00'h

Composed Type: Bits
Base Type: BITS

Value List: 
large (0)
mid-size (1)
compact (2)
string hex byte snmp data-conversion
3个回答
1
投票

您可能已经在“snmpset”的手册页上找到了十六进制和位数据的正确语法: http://www.net-snmp.org/docs/man/snmpset.html

因此,将位值设置为大(0)就像使用语法一样完成

snmpset <flags,host etc> <oid> b 0

要设置多个标志,例如中型和紧凑型,请使用

snmpset <flags,host etc> <oid> b 1,2

我认为后一种语法没有详细记录。我在 net-snmp 的邮件列表档案中找到了它。

就像我在评论中写的那样,SNMP 中没有“HEX STRING”数据类型。如果您想传输二进制数据,例如 OCTET STRING 值,那么您需要在命令行上以某种方式表示它。 Net-snmp 提供了一种名为“HEX STRING”的输入格式,它将使用以下语法接受十六进制输入:

snmpset <flags,host etc> <oid> x 60

顺便说一句,十六进制的“60”与 SNMP 编码“位 1,2”的方式相同(第二位和第三位,MSB 在前)。

有关 SNMP 如何编码和解码 BITS 值的描述可以在 RFC1906 第 8 节中找到。有了这些知识,您只需要了解十六进制转换是如何工作的,这很容易通过 google 搜索到。

编辑:我想这就是你要找的:

0 -> 0x80
1 -> 0x40
2 -> 0x20

与正常 (LSB) 字节编码相比,这有点落后,但请再次阅读 RFC1906 以了解其工作原理。

应该注意的是,如果您尝试在 BITS 变量上设置 OCTET STRING 值,您可能会期望 SNMP 代理返回类型错误。然而,由于 BITS 只是基于 OCTET STRING 类型的 SMI 宏,因此它们实际上以相同的方式进行编码。所以,代理应该愉快地设置该值。


1
投票

使用 Net-SNMP,您不需要计算位值,您可以编写以下代码来设置一个或多个位:

snmpset -v2c -c public 192.168.100.1   $ObjectId   = "medium compact"

0
投票

对这个帖子的回复很晚,但我面临着同样的问题。 要使用 SNMP 设置某些内容,我需要放入具有 BITS 语法的 OctetString。 这是可能性:

BITS {interface1(0),
interface2(1),
interface3(2),
interface4(3),
interface5(4),
interface6(5),
interface7(6),
interface8(7)
}

并且组合是可能的。 我不知道如何仅设置interface5或interface2、interface3和interface5在一起,或者如何将它们全部设置在一起。

有人可以帮助我吗?

谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.