Python 如何在pysnmp中使用JSON
嗨,我在寻找一种在pysnmp中使用json作为OID数组的方法 当前我的inout数据如下所示:Python 如何在pysnmp中使用JSON,python,pysnmp,Python,Pysnmp,嗨,我在寻找一种在pysnmp中使用json作为OID数组的方法 当前我的inout数据如下所示: ( # 1-st target (SNMPv1 over IPv4/UDP) ( cmdgen.CommunityData('public', mpModel=0), cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)), ( cmdgen.MibVariable('SNMPv2-MIB', 'sysDe
(
# 1-st target (SNMPv1 over IPv4/UDP)
( cmdgen.CommunityData('public', mpModel=0),
cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# 2-nd target (SNMPv2c over IPv4/UDP)
( cmdgen.CommunityData('public'),
cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# 3-nd target (SNMPv3 over IPv4/UDP)
( cmdgen.UsmUserData('usr-md5-des', 'authkey1', 'privkey1'),
cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# 4-th target (SN MPv3 over IPv6/UDP)
( cmdgen.UsmUserData('usr-md5-none', 'authkey1'),
cmdgen.Udp6TransportTarget(('::1', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# N-th target
# ...
)
for authData, transportTarget, varNames in targets:
acmdGen.getCmd(
authData, transportTarget, varNames,
# User-space callback function and its context
(cbFun, (authData, transportTarget)),
lookupNames=True, lookupValues=True
)
我这样称呼它:
(
# 1-st target (SNMPv1 over IPv4/UDP)
( cmdgen.CommunityData('public', mpModel=0),
cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# 2-nd target (SNMPv2c over IPv4/UDP)
( cmdgen.CommunityData('public'),
cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# 3-nd target (SNMPv3 over IPv4/UDP)
( cmdgen.UsmUserData('usr-md5-des', 'authkey1', 'privkey1'),
cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# 4-th target (SN MPv3 over IPv6/UDP)
( cmdgen.UsmUserData('usr-md5-none', 'authkey1'),
cmdgen.Udp6TransportTarget(('::1', 161)),
( cmdgen.MibVariable('SNMPv2-MIB', 'sysDescr', 0),
cmdgen.MibVariable('SNMPv2-MIB', 'sysLocation', 0) ) ),
# N-th target
# ...
)
for authData, transportTarget, varNames in targets:
acmdGen.getCmd(
authData, transportTarget, varNames,
# User-space callback function and its context
(cbFun, (authData, transportTarget)),
lookupNames=True, lookupValues=True
)
如果有人能提供一个示例,那就太好了。我没有任何snmp经验,但我在python中使用过json。你能澄清一下吗?是否要存储上面数组的所有实例化的返回?包含所有cmdgen.Object内容的一个。还是要将该数组本身作为json?我想使用json对象而不是第一个代码段,第一个代码段定义将在第二个代码段中使用的snmp信息。在python dict上使用json对象的原因是什么?您是否正在尝试将某些数据扁平化或与其他语言或其他东西共享?JSON中的所有内容都是一个字符串,因此要创建JSON python对象需要额外的努力。您可以创建一个JSON对象,并使用它查找实例化cmdgend.Objects时使用的参数。那会有帮助吗?我仍然有点困惑:node.js中有IPC。我在那里有一个JSON数据,我更喜欢按原样使用它,而不是将它转换成其他东西。现在清楚了吗