python pysnmp使用
SNMP標準引入一組ASN.1語言元素,稱之為SMI(Structure of Management Information)。由SMI描述的相互關聯的被管對象(Managed Objects)組成MIB(Management Information Base)模塊。
?
核心MIB中經常用到的Managed Objects成為SNMP標準的一部分。剩下的MIB一般由設備生產商在其設備中創建。(也就是說這些MIB是生產商和設備相關的)
?
PySNMP是一個純粹用Python實現的SNMP。
?
用PySNMP的最抽象的API為One-line Applications。其中有兩類API:同步的和非同步的,都在模塊pysnmp.entity.rfc3413.oneliner.cmdgen 中實現。
?
所以在使用的時候為了方便,可以
from pysnmp.entity.rfc3413.oneliner import cmdgen然后用cg = cmdgen.CommandGenerator()來產生一個CommandGenerator對象,以后調用cg的getCmd等方法來獲取或者設置網絡設備信息。getCmd()需要三個參數:
1.cmdgen.CommunityData()?? ##社區信息 傳入三個數據,安全my-agent、社區名public、snmp協議版本,之間用逗號隔開,例如 cmdgen.CommunityData('my-agent',?'public',?1)?
?
2.cmdgen.UdpTransportTarget()????##通道參數,傳入一個元組,包含主機IP/域名和端口,例如:cmdgen.UdpTransportTarget(('192.168.70.237',?161)
?
3. OID????##mib值,例如 '.1.3.6.1.4.1.1800.5.13.2'
?
注意:三個參數之間用 ","隔開。
?
?
下面上個例子是獲得設備snmp數據:
?
from?pysnmp.entity.rfc3413.oneliner?import?cmdgendef?snmpget():cg?=?cmdgen.CommandGenerator()?##獲得CommandGenerator對象?errorIndication,?errorStatus,?errorIndex,?varBinds?=?cg.getCmd(#0代表v1,1代表v2c??cmdgen.CommunityData('my-agent',?'public',?1),??##社區信息,my-agent?,public?表示社區名,1表示snmp?v2c版本,0為v1版本cmdgen.UdpTransportTarget(('192.168.70.237',?161)),##這是傳輸的通道,傳輸到IP?192.168.70.237,?端口?161上(snmp標準默認161?UDP端口)?'.1.3.6.1.4.1.1800.5.13.2'?##傳送的OID,個人認為MIB值?)print?str(varBinds[0][1]);?##varBinds返回是一個stulp,含有MIB值和獲得值 def?runit(loop=1):for?i?in?range(loop):snmpget()#print?i? if?__name__?==?"__main__":runit(loop=1)參考:http://blog.sina.com.cn/s/blog_54ce569c01009ccb.html
轉載于:https://blog.51cto.com/huangwenguang/1631278
總結
以上是生活随笔為你收集整理的python pysnmp使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习网络编程推荐安装的软件
- 下一篇: Linux 字符设备驱动开发基础(三)—