首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PYSNMP无法读取自定义windows MIB

PYSNMP无法读取自定义windows MIB
EN

Stack Overflow用户
提问于 2020-06-10 19:14:34
回答 1查看 355关注 0票数 2

我尝试使用PYSNMP从Windows加载在System32中生成的自定义管理信息库文件(HOST-RESSOURCES_ MIB )。

代码如下:

代码语言:javascript
复制
from pysnmp.hlapi import *
from pysmi import debug as pysmi_debug
pysmi_debug.setLogger(pysmi_debug.Debug('compiler'))

errorIndication, errorStatus, errorIndex, varBinds = next(
    getCmd(SnmpEngine(),
           CommunityData('public', mpModel=0),
           UdpTransportTarget(('localhost', 161)),
           ContextData(),
           ObjectType(ObjectIdentity('HOST-RESOURCES-MIB', 'hrSystemUptime', 0).addAsn1MibSource('file:C:/Users/Fusse/Desktop/SNMP/')))
)

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:
        print(' = '.join([x.prettyPrint() for x in varBind]))

我得到一个与主机对象标识符相关的错误,无法读取:

代码语言:javascript
复制
2020-06-10 13:06:22,601 pysmi: current MIB borrower(s):
2020-06-10 13:06:22,603 pysmi: trying source FileReader{"C:\Users\Fusse\Desktop\SNMP"}
2020-06-10 13:06:22,651 pysmi: failing on error Unknown parent symbol: mib_2 at MIB HOST-RESOURCES-MIB from FileReader{"C:\Users\Fusse\Desktop\SNMP"}
2020-06-10 13:06:22,651 pysmi: no HOST-RESOURCES-MIB found everywhere
2020-06-10 13:06:22,651 pysmi: MIBs analyzed 0, MIBs failed 1
2020-06-10 13:06:22,651 pysmi: MIBs parsed 0, MIBs failed 1
2020-06-10 13:06:22,651 pysmi: MIBs built 0, MIBs failed 1
2020-06-10 13:06:22,652 pysmi: MIBs available for borrowing 0, MIBs failed 1
2020-06-10 13:06:22,652 pysmi: MIBs built 0, MIBs failed 1
2020-06-10 13:06:22,652 pysmi: failing with problem MIBs HOST-RESOURCES-MIB

MIB文件的开头如下:

代码语言:javascript
复制
HOST-RESOURCES-MIB DEFINITIONS ::= BEGIN

IMPORTS
    DisplayString             FROM RFC1213-MIB
    TimeTicks, 
    OBJECT-TYPE,
    Counter, Gauge            FROM RFC1155-SMI;

host     OBJECT IDENTIFIER ::= { mib-2 25 }


hrSystem        OBJECT IDENTIFIER ::= { host 1 }
hrStorage       OBJECT IDENTIFIER ::= { host 2 }
hrDevice        OBJECT IDENTIFIER ::= { host 3 }
hrSWRun         OBJECT IDENTIFIER ::= { host 4 }
hrSWRunPerf     OBJECT IDENTIFIER ::= { host 5 }
hrSWInstalled   OBJECT IDENTIFIER ::= { host 6 }

似乎主机对象标识符是问题所在,但我找不到解决方案。

是否有解决方法允许pysnmp读取主机标识符?

EN

回答 1

Stack Overflow用户

发布于 2020-06-10 21:39:59

1)要安装的模块

代码语言:javascript
复制
pip install pysnmp
pip install snmpclitools
pip install pyasn1
pip install pyasn1-modules
pip install pysmi
pip install pysnmpcrypto

2)编译你的mib:

代码语言:javascript
复制
rom pysmi.reader import FileReader
from pysmi.searcher import PyFileSearcher, PyPackageSearcher, StubSearcher
from pysmi.writer import PyFileWriter
from pysmi.parser import SmiStarParser
from pysmi.codegen import PySnmpCodeGen
from pysmi.compiler import MibCompiler

inputMibs = ['IF-MIB', 'IP-MIB']
srcDirectories = ['/usr/share/snmp/mibs']
dstDirectory = '.pysnmp-mibs'

# Initialize compiler infrastructure

mibCompiler = MibCompiler(SmiStarParser(),
                          PySnmpCodeGen(),
                          PyFileWriter(dstDirectory))

# search for source MIBs here
mibCompiler.addSources(*[FileReader(x) for x in srcDirectories])

# check compiled MIBs in our own productions
mibCompiler.addSearchers(PyFileSearcher(dstDirectory))
# ...and at default PySNMP MIBs packages
mibCompiler.addSearchers(*[PyPackageSearcher(x) for x in PySnmpCodeGen.defaultMibPackages])

# never recompile MIBs with MACROs
mibCompiler.addSearchers(StubSearcher(*PySnmpCodeGen.baseMibs))

# run [possibly recursive] MIB compilation
results = mibCompiler.compile(*inputMibs)  #, rebuild=True, genTexts=True)

print('Results: %s' % ', '.join(['%s:%s' % (x, results[x]) for x in results]))

3)检查文件mymib.my是否存在:

代码语言:javascript
复制
Python37\Lib\site-packages\pysnmp\smi\mibs\mymib.py
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62302208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档