用Python遍历输出烟感名称和状态
为了使用Python遍历输出烟感名称和状态,您需要首先从SNMP代理(如网络设备或硬件设备)获取这些值。为此,您可以使用第三方库如pysnmp
,它允许您轻松地与SNMP代理通信。
首先,您需要安装pysnmp
库,如果尚未安装,可以使用pip进行安装:
pip install pysnmp
然后,您可以使用以下Python代码来查询每个烟感的状态并输出其名称和状态:
from pysnmp.hlapi import *
# 烟感列表和对应的OID
sensors = [
{'name': '烟感1', 'oid': '.1.3.6.1.4.1.51812.1.24.1.0'},
{'name': '烟感2', 'oid': '.1.3.6.1.4.1.51812.1.24.2.0'},
{'name': '烟感3', 'oid': '.1.3.6.1.4.1.51812.1.24.3.0'},
{'name': '烟感4', 'oid': '.1.3.6.1.4.1.51812.1.24.4.0'}
]
# SNMP查询参数
community = CommunityData('public', mpModel=0)
udp_transport = UdpTransportTarget(('your_snmp_agent_ip', 161)) # 替换为您的SNMP代理IP和端口
# 遍历烟感列表并查询状态
for sensor in sensors:
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
community,
udp_transport,
ContextData(),
ObjectType(ObjectIdentity(sensor['oid'])))
)
# 检查查询结果
if errorIndication:
print(f"{sensor['name']} 查询失败: {errorIndication}")
elif errorStatus:
print(f"{sensor['name']} 查询失败: {errorStatus.prettyPrint()}")
else:
# 解析状态值
status = varBinds[0][1].prettyPrint()
if status == '0':
status_str = '正常'
elif status == '1':
status_str = '告警'
else:
status_str = '未知状态'
print(f"{sensor['name']} 状态: {status_str}")
# 关闭SNMP引擎
SnmpEngine().shutdown()
请确保将your_snmp_agent_ip
替换为您的SNMP代理的实际IP地址,并根据需要调整端口号(默认为161)。此代码段定义了一个sensors
列表,其中包含了烟感的名称和对应的OID。然后,它使用pysnmp
库的getCmd
函数来查询每个烟感的状态,并根据返回的值输出烟感的名称和状态。