def __init__(self, mib_list, src_dir_list, http_sources=None): if "BFT_DEBUG" in os.environ: self.dbg = os.environ.get('BFT_DEBUG') else: self.dbg = "" if "yy" in self.dbg: # VERY verbose, but essential for spotting # possible ASN.1 errors from pysmi import debug debug.setLogger(debug.Debug('reader', 'compiler')) # Initialize compiler infrastructure mibCompiler = MibCompiler(SmiStarParser(), JsonCodeGen(), CallbackWriter(self.callback_func)) # search for source MIBs here mibCompiler.addSources(*[FileReader(x) for x in src_dir_list]) if http_sources: # search for source MIBs at Web sites mibCompiler.addSources(*[HttpReader(*x) for x in http_sources]) # never recompile MIBs with MACROs mibCompiler.addSearchers(StubSearcher(*JsonCodeGen.baseMibs)) # run recursive MIB compilation mibCompiler.compile(*mib_list)
def fetch_mib(mib): target_directory = os.path.dirname(pysnmp_mibs.__file__) reader = HttpReader('mibs.snmplabs.com', 80, '/asn1/@mib@') mibCompiler = MibCompiler(SmiStarParser(), PySnmpCodeGen(), PyFileWriter(target_directory)) mibCompiler.addSources(reader) mibCompiler.compile(mib)
def fetch_mib(mib): import pysnmp_mibs from pysmi.codegen import PySnmpCodeGen from pysmi.compiler import MibCompiler from pysmi.parser import SmiStarParser from pysmi.reader import HttpReader from pysmi.writer import PyFileWriter target_directory = os.path.dirname(pysnmp_mibs.__file__) reader = HttpReader('mibs.snmplabs.com', 80, '/asn1/@mib@') mibCompiler = MibCompiler(SmiStarParser(), PySnmpCodeGen(), PyFileWriter(target_directory)) mibCompiler.addSources(reader) mibCompiler.compile(mib)
def __init__(self, mib_list, src_dir_list, http_sources=None): if "BFT_DEBUG" in os.environ: self.dbg = os.environ.get('BFT_DEBUG') else: self.dbg = "" if "yy" in self.dbg: # VERY verbose, but essential for spotting # possible ASN.1 errors from pysmi import debug debug.setLogger(debug.Debug('reader', 'compiler')) # Initialize compiler infrastructure mibCompiler = MibCompiler(SmiStarParser(), JsonCodeGen(), CallbackWriter(self.callback_func)) # search for source MIBs here mibCompiler.addSources(*[FileReader(x) for x in src_dir_list]) if http_sources: # search for source MIBs at Web sites mibCompiler.addSources(*[HttpReader(*x) for x in http_sources]) # never recompile MIBs with MACROs mibCompiler.addSearchers(StubSearcher(*JsonCodeGen.baseMibs)) # run recursive MIB compilation mib_dict = mibCompiler.compile(*mib_list) err = False if mib_dict is None or mib_dict == {}: print( "ERROR: failed on mib compilation (mibCompiler.compile returned an empty dictionary)" ) err = True for key, value in mib_dict.iteritems(): if value == 'unprocessed': print("ERROR: failed on mib compilation: " + key + ": " + value) err = True if err: raise Exception("SnmpMibs failed to initialize.") elif 'BFT_DEBUG' in os.environ: print('# %d MIB modules compiled' % len(mib_dict))
def fetch_mib(mib, source_url): try: from urllib.parse import urlparse except ImportError: from urlparse import urlparse import pysnmp_mibs from pysmi.codegen import PySnmpCodeGen from pysmi.compiler import MibCompiler from pysmi.parser import SmiStarParser from pysmi.reader import HttpReader from pysmi.writer import PyFileWriter target_directory = os.path.dirname(pysnmp_mibs.__file__) parsed_url = urlparse(source_url) reader = HttpReader(parsed_url.netloc, 80, parsed_url.path) mibCompiler = MibCompiler(SmiStarParser(), PySnmpCodeGen(), PyFileWriter(target_directory)) mibCompiler.addSources(reader) mibCompiler.compile(mib)
from pysmi.reader import HttpReader 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 inputMibs = ['IF-MIB', 'IP-MIB'] httpSources = [('mibs.snmplabs.com', 80, '/asn1/@mib@')] # store compiled MIBs by calling this function def store_mibs(mibName, jsonDoc, cbCtx): print('# MIB module %s' % mibName) print(jsonDoc) mibCompiler = MibCompiler(SmiStarParser(), JsonCodeGen(), CallbackWriter(store_mibs)) # pull ASN.1 MIBs over HTTP mibCompiler.addSources(*[HttpReader(*x) for x in httpSources]) # never recompile MIBs with ASN.1 MACROs mibCompiler.addSearchers(StubSearcher(*JsonCodeGen.baseMibs)) status = mibCompiler.compile(*inputMibs) print(status)
from pysmi.reader import FtpReader from pysmi.reader import FileReader from pysmi.searcher import StubSearcher from pysmi.writer import PyFileWriter from pysmi.parser import SmiStarParser from pysmi.codegen import PySnmpCodeGen from pysmi.compiler import MibCompiler inputMibs = ['IF-MIB', 'BRIDGE-MIB', 'LUXL-POE-MIB', 'LUXL-SMI', 'LUXL-TC'] httpSources = [('mibs.snmplabs.com', 80, '/asn1/@mib@')] ftpSources = [('ftp.cisco.com', '/pub/mibs/v2/@mib@')] srcDirectories = [('./LUXL_MIBs_ALL')] dstDirectory = './lib/python3.7/site-packages/pysnmp/smi/mibs/' # Initialize compiler infrastructure mibCompiler = MibCompiler(SmiStarParser(), PySnmpCodeGen(), PyFileWriter(dstDirectory)) # search for source MIBs at Web and FTP sites mibCompiler.addSources(*[HttpReader(*x) for x in httpSources]) mibCompiler.addSources(*[FtpReader(*x) for x in ftpSources]) mibCompiler.addSources(*[FileReader(x) for x in srcDirectories]) # never recompile MIBs with MACROs mibCompiler.addSearchers(StubSearcher(*PySnmpCodeGen.baseMibs)) # run non-recursive MIB compilation results = mibCompiler.compile(*inputMibs, **dict(noDeps=True)) print('Results: %s' % ', '.join(['%s:%s' % (x, results[x]) for x in results]))
def writer(mib_name, json_doc, context): data = json.loads(json_doc) for k,v in data.items(): DATA[v.get('oid')] = v.get('name') DATA[v.get('name')] = v.get('oid') for inputMib in inputMibs: print(inputMib) try: mibCompiler = MibCompiler( SmiStarParser(), JsonCodeGen(), CallbackWriter(writer) ) # search for source MIBs here mibCompiler.addSources(*[FileReader(x) for x in srcDirectories]) # search for source MIBs at Web sites #mibCompiler.addSources(*[HttpReader(*x) for x in httpSources]) # never recompile MIBs with MACROs #mibCompiler.addSearchers(StubSearcher(*JsonCodeGen.baseMibs)) # run recursive MIB compilation results = mibCompiler.compile(inputMib) except Exception as e:
MIB modules, just pass genTexts flag to MIB compiler. """# from 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