Generated MIB modules

Loading an IANA PEN module

Load an IANA PEN MIB instance module

Load a module produced by tools/iana_pen_to_mib.py and resolve one private enterprise number to its registered organization name.

Run from the repository root after generating the module:

python examples/smi/manager/load-iana-pen-mib.py \
    build/IANA-PEN-MIB.py 20408

import argparse
from pathlib import Path

from pysnmp.smi.builder import DirMibSource, MibBuilder

parser = argparse.ArgumentParser()
parser.add_argument("mib", help="Generated IANA PEN MIB Python file")
parser.add_argument("pen", type=int, help="Private enterprise number to look up")
parser.add_argument(
    "--module-name",
    help="Generated module name (defaults to the input filename without .py)",
)
args = parser.parse_args()

mib_path = Path(args.mib).resolve()
module_name = args.module_name or mib_path.stem

mib_builder = MibBuilder()
mib_builder.addMibSources(DirMibSource(str(mib_path.parent)))
mib_builder.loadModules(module_name)

(pen_instance,) = mib_builder.importSymbols(module_name, f"pen_{args.pen}")
oid = ".".join(str(component) for component in pen_instance.name)
print(f"{oid} = {pen_instance.syntax.prettyPrint()}")

Download script.

Loading generated instance stubs

Load generated MIB instance stubs

Load a MIB definition and its companion module produced by tools/mib_instance_generator.py, then display all generated instances.

Run from the repository root:

python examples/smi/agent/load-generated-mib-instances.py \
    EXAMPLE-DEVICE-MIB build/EXAMPLE-DEVICE-MIB_instances.py

import argparse
from pathlib import Path

from pysnmp.smi.builder import DirMibSource, MibBuilder

parser = argparse.ArgumentParser()
parser.add_argument("definitions_module", help="Compiled MIB definitions module name")
parser.add_argument("instances", help="Generated MIB instances Python file")
parser.add_argument(
    "--mib-source",
    action="append",
    default=[],
    help="Additional directory containing compiled MIB definitions",
)
parser.add_argument(
    "--instances-module",
    help="Exported instances module name (defaults to <definitions>_instances)",
)
args = parser.parse_args()

instances_path = Path(args.instances).resolve()
instances_module = args.instances_module or f"{args.definitions_module}_instances"

mib_builder = MibBuilder()
for source in [instances_path.parent, *(Path(path) for path in args.mib_source)]:
    mib_builder.addMibSources(DirMibSource(str(source.resolve())))

mib_builder.loadModules(args.definitions_module)
mib_builder.loadModules(instances_path.stem)

for symbol_name, instance in sorted(mib_builder.mibSymbols[instances_module].items()):
    print(f"{symbol_name}: {instance.name} = {instance.syntax.prettyPrint()}")

Download script.

See also: MIB instance generation tools.