我尝试构建一个python脚本来从snmp传感器获取温度。
如果我将此命令行用于Linux终端
snmpwalk 10.100.2.21 -On -v 1 -c public .1.3.6.1.4.1.28507.14.1.3.1.1.2.2
输出正确:
.1.3.6.1.4.1.28507.14.1.3.1.1.2.2 = INTEGER: 225
实际上它的返回温度:-) 22.5°C 但我必须使用python脚本:
#!/usr/bin/python
# -*- coding: latin-1 -*-
import netsnmp
#oid = '.1.3.6.1.4.1.28507.14.1.3.1.1.2.2'
oid = netsnmp.VarList(netsnmp.Varbind('.1.3.6.1.4.1.28507.14.1.3.1.1.2.2'))
print ("Hello !!!")
res = netsnmp.snmpwalk(oid, Version=1, DestHost='10.100.2.21', Community='public')
print res
我不知道为什么,我的脚本只返回:
"()"
你有一些想法吗?
感谢
答案 0 :(得分:1)
netsnmp的构造不起作用。据我所知,你需要在进行查询之前打开一个snmp会话。
我通常会这样做:
.m3u8
然后你可以检查你是否有适当的会话:
session=netsnmp.Session(DestHost=myip, Version=2, Community='public', RemotePort=161)
最后:
if session:
continue
else:
print sys.exc_info()
exit(1)
我正在使用for循环,因为您选择了myoid=netsnmp.VarList('.1.3.6.1.4.1.28507.14.1.3.1.1.2.2')
res=snmp.walk(myoid)
for i in res:
print i
,这可能会返回多行值。您可以使用snmp.walk()
代替