snmpwalk与python scrypt

时间:2015-12-16 10:05:08

标签: python snmp

我尝试构建一个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

我不知道为什么,我的脚本只返回:

 "()"

你有一些想法吗?

感谢

1 个答案:

答案 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()代替