在单个事务中查询多个OID时,可以通过以下步骤调查Pysnmp中每个OID的errorStatus:
from pysnmp.hlapi import *
def get_snmp_data(oids, host, community='public', port=161):
for oid in oids:
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData(community),
UdpTransportTarget((host, port)),
ContextData(),
ObjectType(ObjectIdentity(oid)))
)
yield oid, errorStatus, varBinds
oids = ['1.3.6.1.2.1.1.1.0', '1.3.6.1.2.1.1.2.0', '1.3.6.1.2.1.1.3.0']
host = '192.168.1.1'
for oid, errorStatus, varBinds in get_snmp_data(oids, host):
if errorStatus:
print(f"Error retrieving data for OID {oid}: {errorStatus.prettyPrint()}")
else:
for varBind in varBinds:
print(f"OID: {varBind[0]}\nValue: {varBind[1]}")
在上述代码中,我们定义了一个get_snmp_data
函数,它接受OID列表、主机地址、社区字符串和端口作为参数。该函数使用getCmd
方法发送SNMP请求,并返回每个OID的errorStatus和varBinds。然后,我们通过调用生成器来获取每个OID的结果,并根据errorStatus判断是否出现错误。如果有错误,我们打印错误信息;否则,我们打印每个OID的值。
请注意,这只是一个示例代码,你可以根据实际情况进行修改和扩展。此外,对于Pysnmp中的每个OID,你可以进一步研究其概念、分类、优势和应用场景,以及腾讯云提供的相关产品和产品介绍链接地址。
领取专属 10元无门槛券
手把手带您无忧上云