我需要 unwrap/parse snmp 结果
I need to unwrap/parse snmp results
让我先声明一下,我对 SNMP 几乎一无所知,但我正在学习。我正在尝试从打印机获取设备名称。
我得到“1.3.6.1.2.1.1.5.0”OID。但是它里面有很多附加信息,我认为它是某种包装器,但我不知道如何打开它。
这是我得到的结果
varBinds=[ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.5.0')), DisplayString(b'OFHP1', subtypeSpec=ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(), ValueSizeConstraint(0, 65535)), ValueSizeConstraint(0, 255)), ValueSizeConstraint(0, 255))))]
打印机名称为 OFHP1。这就是我所需要的。是否有解包命令,或者我是否需要通过暴力解析它?
谈到 SNMP,您通常会处理所谓的 variable-binding 或 OID-value 对。这在概念上类似于您可能在其他应用程序中遇到的 key-value 对。
所以你的 varBinds
是一个对象列表,每个对象代表一个 ket-value 对。要获得您需要向下遍历到所需组件的值:
varBind = varBinds[0] # first var-bind
oid, value = varBind # unpack var-bind into OID and value
现在,SNMP 中的值是类型化和受限的(它们实际上是 ASN.1 类型)。这就是为什么它们不仅仅是基础 Python 类型,而是专门化的对象。但是您可以去除它们携带的额外信息并从任何 SNMP 标量中获得纯 Python 字符串(或 int):
py_value = str(value) # turn SNMP value object into Python str
py_value = value.prettyPrint() # turn SNMP value object into a MIB-guided, human friendly representation
让我先声明一下,我对 SNMP 几乎一无所知,但我正在学习。我正在尝试从打印机获取设备名称。 我得到“1.3.6.1.2.1.1.5.0”OID。但是它里面有很多附加信息,我认为它是某种包装器,但我不知道如何打开它。
这是我得到的结果
varBinds=[ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.5.0')), DisplayString(b'OFHP1', subtypeSpec=ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(), ValueSizeConstraint(0, 65535)), ValueSizeConstraint(0, 255)), ValueSizeConstraint(0, 255))))]
打印机名称为 OFHP1。这就是我所需要的。是否有解包命令,或者我是否需要通过暴力解析它?
谈到 SNMP,您通常会处理所谓的 variable-binding 或 OID-value 对。这在概念上类似于您可能在其他应用程序中遇到的 key-value 对。
所以你的 varBinds
是一个对象列表,每个对象代表一个 ket-value 对。要获得您需要向下遍历到所需组件的值:
varBind = varBinds[0] # first var-bind
oid, value = varBind # unpack var-bind into OID and value
现在,SNMP 中的值是类型化和受限的(它们实际上是 ASN.1 类型)。这就是为什么它们不仅仅是基础 Python 类型,而是专门化的对象。但是您可以去除它们携带的额外信息并从任何 SNMP 标量中获得纯 Python 字符串(或 int):
py_value = str(value) # turn SNMP value object into Python str
py_value = value.prettyPrint() # turn SNMP value object into a MIB-guided, human friendly representation