您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > python snmp 自动化2在python中使用snmp
pythonsnmp自动化2在python中使用snmppythonsnmp自动化2-在python中使用snmp#2012-02-23磁针石#承接软件自动化实施与培训验证码破解软件破解脚本开发测试和python培训等#gtalk:ouyangchongwu#gmail.comqq37391319博客:testing.blog.chinaunix.net#版权所有,转载刊登请来函联系#自动化测试和python群组::深圳自动化测试python群:113938272#武冈深圳qq群:66250781都梁深圳湖南户外群:49494279#参考资料为什么不使用pysnmp?Pysnmp是一个纯python的snmp模块,不过我们的mib文件,大概有20%的,Pysnmp不能成功读取,报错如下:#build-pysnmp-mib-ofsp150cm-sa.mib.txtfsp150cm-sa.mibWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBWARNING:emptyMIBmodulenameseeninsmidumpoutputatCM-SA-MIBTraceback(mostrecentcalllast):File/usr/bin/libsmi2pysnmp,line5,inpkg_resources.run_script('pysnmp==4.2.1','libsmi2pysnmp')File/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py,line489,inrun_scriptFile/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py,line1214,inrun_scriptFile/usr/lib/python2.7/site-packages/pysnmp-4.2.1-py2.7.egg/EGG-INFO/scripts/libsmi2pysnmp,line435,inFile/usr/lib/python2.7/site-packages/pysnmp-4.2.1-py2.7.egg/EGG-INFO/scripts/libsmi2pysnmp,line147,in__genTypeDefKeyError:'syntax'smidump-k-fpythonfsp150cm-sa.mib|/usr/bin/libsmi2pysnmpfailsmakesureyouareusinglibsmiversion>0.4.5(orsvn)网上有篇netsnmp和pysnmp比较的评论:Thisisn'tsomuchananswerasmuchasmesharingmyexperiencetestingtheselibraries.IransomesnmpwalkbenchmarksonPySNMP4.xandnet-snmpusingpython'smultiprocessing.Pool.Benchmarkswereprettydirty(basicallyscaledupthethreadpooluntilIdidn'tgetanyperformancegains),soreaderbe-ware.Here'ssomeobservations:netsnmp'spythonbindings:*Couldpulldown11958oids/seconthequadcoretestbox.*Didn'tconsumealotofCPU.SeemedtobewaitingonnetworkI/Omostofthetime(keepreading).*Didn'tsupportsnmpbulkwalk,unfortunately.Sothisgeneratesmorenetworktrafficandasinglethreadofexecutiontendstobeslow.*IthassomeannoyingMIBlookupbehavior.Ihadtospecify'ifName'insteadof'IF-MIB::ifName',whichcouldleadtosomeambiguity.Ialsocouldn'tseemtofindawaytocontrolMIBlookupsverywell.*Threadingwillnotworkwell.Evenifyouwantonethreadofexecution,runitinaseparateprocesssoyoudon'tstarveotherthreads.Thislibraryisthreadsafe,butnotthreadfriendly.PySNMP4:*Cameinat5560oids/seconthesamebox.*VeryCPUintensive.Iattributethistothepacketparsingbeingdoneinpython.*MIBlookupsIthoughtwerereallynice.*snmpwalkswouldleaksomeunrelatedOIDs.Forexample,I'dwalkIF-MIB::ifXTableandattheendI'dgetIF-MIB::ifStackTable.IF-MIBdump.*I'dalmostcertainlytailorawrapperformyapplicationinsteadofusingthislibrarydirectly.SpecificallyI'dwrapalltheerrorhandlingtouseExceptions.*I'mnotabigfanofwriting/readingasynchronouscode,soI'djustignorealltheasyncbitsandrunbigSNMPoperationsinaseparateprocess.Overall,I'mreallykindofdisappointed.There'sreallynotabestoveralllibrary.ApartfromtheAPIandperformance,PySNMP4isgreat.ApartfromhavingsomestrangeMIB/oidlookuphandlingbehaviorandnotsupportingmanybulkoperations,NetSNMP'spythonbindingsweregreat.可见pysnmp强在mib解析等方面,性能方面不能和netsnmp媲美。既然我们的mibpysnmp无法解析,只好放弃,期待pysnmp尽快开发出自己的好的mib解析器。只有选择netsnmp。为什么不使用subprocess?Subprocess会经常出现超时。PythonGet示例:单个get:printGetntpClientEnabledoid=netsnmp.Varbind('1.3.6.1.4.1','2544.1.12.2.1.10.1.0')oidList=netsnmp.VarList(oid)resultList=netsnmp.snmpget(oid,Version=2,DestHost='172.23.192.44',Community='private')printresultList以下是通过类的方法进行Get:session=netsnmp.Session(Version=2,DestHost='172.23.192.44',Community='private')oid=netsnmp.Varbind('1.3.6.1.4.1','2544.1.12.2.1.10.1.0',2,'INTEGER')oidList=netsnmp.VarList(oid)resultList=session.get(oidList)printresultList多个get:printGetntpClientEnabledoid=netsnmp.Varbind('1.3.6.1.4.1','2544.1.12.2.1.10.1.0')oid1=netsnmp.Varbind('1.3.6.1.4.1.2544.1.12.8.1.1.1.5','1.1.1.1','15','INTEGER')resultList=netsnmp.snmpget(oid,oid1,Version=2,DestHost='172.23.192.44',Community='private')printresultList以下是通过类的方法进行Get:session=netsnmp.Session(Version=2,DestHost='172.23.192.44',Community='private')oid2=netsnmp.Varbind('1.3.6.1.4.1','2544.1.12.2.1.10.1.0',2,'INTEGER')oid3=netsnmp.Varbind('.1.3.6.1.4.1.2544.1.12.8.1.1.1.5','1.1.1.1',20,'INTEGER')oidList=netsnmp.VarList(oid3,oid2)resultList=session.get(oidList)printresultLi
本文标题:python snmp 自动化2在python中使用snmp
链接地址:https://www.777doc.com/doc-4210388 .html