我有一个连接到网络的设备,该设备使用带有各种“参数”的自定义.MIB文件。 我可以使用MIB浏览器并找到对象名称(例如“ powerSystemCompany”)的OID。
但是对于编写我的代码,我希望有一个get命令能看到类似的东西:
powerSystemCompany = CompanyName
代替:
SNMPv2-SMI::enterprises.12148.10.2.4 = CompanyName
据我了解,我需要以某种方式将MIB文件编译为pysnmp mib或JSON格式,并使用检索到的OID查找参数“ powerSystemCompany”。
但是我仍然无法使用mibdump.py或pysnmi来获取.py或.json MIB。当我尝试使用mibdump.py时,在Anaconda提示符中尝试了以下操作:
mibdump.py --mib-source='C:\\User\\$user$\\Documents\\pysnmp_Project\\mibs' --destination-format='json'
python mibdump.py --mib-source='C:\\User\\$user$\\Documents\\pysnmp_Project\\mibs' --destination-format='json'
但是第一个只是在我的VScode编辑器中打开mibdump.py,第二个给出了错误:
'python" can't open file 'mibdump.py': [Errno 2] no such file or directory
我还尝试了如下所示的pysnmi实现:
from pysmi.reader import FileReader
from pysmi.searcher import StubSearcher
from pysmi.writer import CallbackWriter
from pysmi.parser import SmiStarParser
from pysmi.codegen import JsonCodeGen
from pysmi.compiler import MibCompiler
# from pysmi import debug
# debug.setLogger(debug.Debug('reader', 'compiler'))
inputMibs = 'SNMPv2-SMI'
srcDirectories = 'C://User//$user$//Documents//pysnmp_Project//mibs'
def printOut(mibName, jsonDoc, cbCtx):
print('\n\n# MIB module %s' % mibName)
print(jsonDoc)
# Initialize compiler infrastructure
mibCompiler = MibCompiler(
SmiStarParser(), JsonCodeGen(), CallbackWriter(printOut)
)
# search for source MIBs here
mibCompiler.addSources(*[FileReader(x) for x in srcDirectories])
# never recompile MIBs with MACROs
mibCompiler.addSearchers(StubSearcher(*JsonCodeGen.baseMibs))
# run recursive MIB compilation
results = mibCompiler.compile(*inputMibs)
print('\n# Results: %s' % ', '.join(['%s:%s' % (x, results[x]) for x in results]))
编辑:但这似乎卡在mibCompiler.compile(* inputMibs)上。通过HTTP请求使用示例代码只花了几秒钟,而我已经等了几分钟。
这样做的目的是使我的实验室设备自动化,该设备使用SNMP。
我希望我能说清楚一点,否则我想详细说明。
答案 0 :(得分:0)
我认为您使事情复杂化了!加载相关MIB的简单SNMP GET命令就足够了:
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<script src="plotly-latest.min.js"></script>
<script src="https://cdn.plot.ly/plotly-1.2.0.min.js"></script>
您可能还需要set up a path到ASN.1(非Python)MIB,以便pysnmp可以找到,加载和编译它们。