只能pysnmp return octectstring值
Can pysnmp return octectstring values only
我正在编写一个小脚本来使用 PySnmp 获取 SNMP 陷阱。
我可以得到oid = value pairs
,但是值太长了,最后的信息很少。我如何才能 仅访问值末尾的 octectstring 。除了字符串操作之外还有其他方法吗?请评论。
OID =_BindValue(componentType=NamedTypes(NamedType('value', ObjectSyntax------------------------------------------------(DELETED)-----------------(None, OctetString(b'New Alarm'))))
是否可以从另一个 SNMP 客户端获得如下输出:
.iso.org.dod.internet.private.enterprises.xxxx.1.1.2.2.14: CM_DAS Alarm Traps:
编辑 - 代码是:
**for oid, val in varBinds:
print('%s = %s' % (oid.prettyPrint(), val.prettyPrint()))
target.write(str(val))**
在屏幕上,它显示短,但在文件上,val 很长。
target.write( str(val[0][1][2]))
的使用并非对所有人都有效(程序因错误而停止),但第一个 oid(时间刻度)就可以了。
我如何从 tail 中获取值,因为所有 oid 的实际值都在那里。
谢谢。
SNMP 以称为变量绑定的 OID 值对序列的形式传输信息:
variable_bindings = [[oid1, value1], [oid2, value2], ...]
从 SNMP PDU 获得变量绑定序列后,例如,要访问值 1,您可以这样做:
variable_binding1 = variable_bindings[0]
value1 = variable_binding1[1]
要访问 value1 的尾部(假设它是一个字符串),您可以简单地订阅它:
tail_of_value1 = value1[-10:]
我想在你的问题中你操作的是单个 variable_binding,而不是它们的序列。
如果您希望 pysnmp 将 oid-value 对转换为人类友好的表示形式(MIB 对象名称、MIB 对象值),您必须将原始 OID-value 对传递给 ObjectType class 和 运行 它通过 MIB 解析器,如文档中所述。
谢谢...
以下代码的工作方式与我正在寻找的一样。
if str(oid)=="1.3.6.1.2.1.1.3.0":
target.write(" = str(val[0][1]['timeticks-value']) = " +str(val[0][1]['timeticks-value'])) # time ticks
else:
target.write("= val[0][0]['string-value']= " + str(val[0][0]['string-value']))
我正在编写一个小脚本来使用 PySnmp 获取 SNMP 陷阱。
我可以得到oid = value pairs
,但是值太长了,最后的信息很少。我如何才能 仅访问值末尾的 octectstring 。除了字符串操作之外还有其他方法吗?请评论。
OID =_BindValue(componentType=NamedTypes(NamedType('value', ObjectSyntax------------------------------------------------(DELETED)-----------------(None, OctetString(b'New Alarm'))))
是否可以从另一个 SNMP 客户端获得如下输出:
.iso.org.dod.internet.private.enterprises.xxxx.1.1.2.2.14: CM_DAS Alarm Traps:
编辑 - 代码是:
**for oid, val in varBinds:
print('%s = %s' % (oid.prettyPrint(), val.prettyPrint()))
target.write(str(val))**
在屏幕上,它显示短,但在文件上,val 很长。
target.write( str(val[0][1][2]))
的使用并非对所有人都有效(程序因错误而停止),但第一个 oid(时间刻度)就可以了。
我如何从 tail 中获取值,因为所有 oid 的实际值都在那里。
谢谢。
SNMP 以称为变量绑定的 OID 值对序列的形式传输信息:
variable_bindings = [[oid1, value1], [oid2, value2], ...]
从 SNMP PDU 获得变量绑定序列后,例如,要访问值 1,您可以这样做:
variable_binding1 = variable_bindings[0]
value1 = variable_binding1[1]
要访问 value1 的尾部(假设它是一个字符串),您可以简单地订阅它:
tail_of_value1 = value1[-10:]
我想在你的问题中你操作的是单个 variable_binding,而不是它们的序列。
如果您希望 pysnmp 将 oid-value 对转换为人类友好的表示形式(MIB 对象名称、MIB 对象值),您必须将原始 OID-value 对传递给 ObjectType class 和 运行 它通过 MIB 解析器,如文档中所述。
谢谢... 以下代码的工作方式与我正在寻找的一样。
if str(oid)=="1.3.6.1.2.1.1.3.0":
target.write(" = str(val[0][1]['timeticks-value']) = " +str(val[0][1]['timeticks-value'])) # time ticks
else:
target.write("= val[0][0]['string-value']= " + str(val[0][0]['string-value']))