# Compile MIBs into JSON

Look up specific ASN.1 MIBs at configured Web and FTP sites, compile them into JSON documents and print them out to stdout.

Try to support both SMIv1 and SMIv2 flavors of SMI as well as popular deviations from official syntax found in the wild.

    from pysmi.reader import FileReader, 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
    # from pysmi import debug

    # debug.setLogger(debug.Debug('reader', 'compiler'))

    inputMibs = ['IF-MIB', 'IP-MIB']
    srcDirectories = ['/usr/share/snmp/mibs']
    httpSources = [
        ('mibs.snmplabs.com', 80, '/asn1/@mib@')
    ]

    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])

    # 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(*inputMibs)

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

`Download` script.