def start(self, host, port): self.cmd_responder = CommandResponder(host, port, self.compiled_mibs) self.xml_general_config(self.dom) self.xml_mib_config(self.dom, self.compiled_mibs, self.raw_mibs) logger.info('SNMP server started on: %s', (host, self.get_port())) self.cmd_responder.serve_forever()
def test_register_loads_custom_mib(): raw_mibs = os.path.join(os.path.dirname(__file__), "data") with TemporaryDirectory() as tmpdir: responder = CommandResponder("", 0, raw_mibs, tmpdir) responder.register("VOGON-POEM-MIB", "poemNumber", (0,), 42, None) assert responder._get_mibSymbol("VOGON-POEM-MIB", "poemNumber")
def test_register_fails_on_unknown_mib(): with TemporaryDirectory() as tmpdir: responder = CommandResponder("", 0, "/tmp", tmpdir) with pytest.raises(MibNotFoundError) as exc_info: responder.register("NONEXISTENT-MIB", "foobar", (0,), 42, None) assert str(exc_info.value).startswith("NONEXISTENT-MIB compilation error") assert not responder._get_mibSymbol("NONEXISTENT-MIB", "foobar")
def __init__(self, host, port, template, mibpaths, rawmibs_dirs): """ :param host: hostname or ip address on which to server the snmp service (string). :param port: listen port (integer). :param template: path to conpot xml configuration file (string). :param log_queue: shared log queue (list). :param mibpaths: collection of paths to search for COMPILED mib files (iterable collection of strings). :param rawmibs_dir: collection of paths to search for raw mib files, these files will get compiled by conpot (string). """ self.host = host self.port = port dom = etree.parse(template) self.cmd_responder = CommandResponder(self.host, self.port, mibpaths) self.xml_general_config(dom) self.xml_mib_config(dom, mibpaths, rawmibs_dirs)