之前在開發Java監控Server需要用到snmp套件是使用snmp4j
在.net(C#)是使用SNMPSharpNet
今天則是記錄Python上找了一下比較方便的套件pysnmp
官方網站如下:
http://snmplabs.com/pysnmp/index.html
基本的snmpget、snmpset 操作說明如下
###套件安裝
pip install pysnmp
###把snmpget包裝成一個方法呼叫
from pysnmp.hlapi import *
from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.proto import rfc1902
ip = '127.0.0.1'
oid = "1.3.6.1.2.1.2.2.1.8.1"
result = snmpget(ip,oid)
def snmpget(ip,oid):
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('private'),
UdpTransportTarget((ip, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
return(str(varBind).split('=')[1])
###snmpset用法,此方法為一次設定兩個OID
from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.proto import rfc1902
cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBinds = cmdGen.setCmd(
cmdgen.CommunityData('private', mpModel=0),
cmdgen.UdpTransportTarget(127.0.0.1, 161)),
('.1.3.6.1.2.1.0.1.1', rfc1902.Integer(1)),
('.1.3.6.1.2.1.0.1.2, rfc1902.Integer(1))
)
若有問題都歡迎討論,謝謝。