Example #1
0
 def run(self):
     ##def main(argv):
     hostPort = '%s:%d' % (HOST_ADDR, TRAP_PORT)
     s = Trapd()
     s.awaitTraps(hostPort)
     twistedsnmp.updateReactor()
     reactor.run()
Example #2
0
 def fetch(self, targets):
     self.fetch_defer = defer.Deferred()
     self.targets = targets
     self.next_target()
     self._stopped = False
     twistedsnmp.updateReactor()
     return self.fetch_defer
Example #3
0
    def __init__(
            self, taskName, configId, scheduleIntervalSeconds=3600,
            taskConfig=None):
        BaseTask.__init__(
            self, taskName, configId, scheduleIntervalSeconds, taskConfig
        )
        self.log = log

        # Needed for interface
        self.name = taskName
        self.configId = configId
        self.state = TaskStates.STATE_IDLE
        self.interval = scheduleIntervalSeconds
        self._daemon = getUtility(ICollector)
        self._eventService = queryUtility(IEventService)
        self._preferences = self._daemon
        self._statService = queryUtility(IStatisticsService)
        # For compatibility with captureReplay
        self.options = self._daemon.options
        self.oidMap = self._daemon.oidMap
        self.stats = Stats()

        # Command-line argument sanity checking
        self.processCaptureReplayOptions()
        self.session = None
        self._replayStarted = False
        if not self.options.replayFilePrefix:
            trapPort = self._preferences.options.trapport
            if not self.options.useFileDescriptor and trapPort < 1024:
                listen_ip = "ipv6" if ipv6_is_enabled() else "0.0.0.0"
                # Makes call to zensocket here
                # does an exec* so it never returns
                self._daemon.openPrivilegedPort(
                    '--listen',
                    '--proto=udp',
                    '--port=%s:%d' % (listen_ip, trapPort)
                )
                self.log("Unexpected return from openPrivilegedPort. Exiting.")
                sys.exit(1)

            # Start listening for SNMP traps
            self.log.info("Starting to listen on SNMP trap port %s", trapPort)
            self.session = netsnmp.Session()
            listening_protocol = "udp6" if ipv6_is_enabled() else "udp"
            if self._preferences.options.useFileDescriptor is not None:
                # open port 1162, but then dup fileno onto it
                listening_address = listening_protocol + ':1162'
                fileno = int(self._preferences.options.useFileDescriptor)
            else:
                listening_address = '%s:%d' % (listening_protocol, trapPort)
                fileno = -1
            self._pre_parse_callback = _pre_parse_factory(self._pre_parse)
            debug = self.log.isEnabledFor(logging.DEBUG)
            self.session.awaitTraps(
                listening_address, fileno, self._pre_parse_callback, debug
            )
            self.session.callback = self.receiveTrap
            twistedsnmp.updateReactor()
Example #4
0
def main():
    import getopt
    # from snmp_parse_args.c
    opts = 'Y:VhHm:M:O:I:P:D:dv:r:t:c:Z:e:E:n:u:l:x:X:a:A:p:T:-:3:s:S:L:'
    args, hosts = getopt.getopt(sys.argv[1:], opts)
    if not hosts:
        hosts = ['localhost']
    d = defer.DeferredList(
        [Walker(peername=host, cmdLineArgs=args).start() for host in hosts],
        consumeErrors=True)
    d.addBoth(stop)
    twistedsnmp.updateReactor()
    reactor.run()
Example #5
0
    def __init__(self, taskName, configId,
                 scheduleIntervalSeconds=3600, taskConfig=None):
        BaseTask.__init__(self, taskName, configId,
                 scheduleIntervalSeconds, taskConfig)
        self.log = log

        # Needed for interface
        self.name = taskName
        self.configId = configId
        self.state = TaskStates.STATE_IDLE
        self.interval = scheduleIntervalSeconds
        self._daemon = zope.component.getUtility(ICollector)
        self._eventService = zope.component.queryUtility(IEventService)
        self._preferences = self._daemon
        self._statService = zope.component.queryUtility(IStatisticsService)
        # For compatibility with captureReplay
        self.options = self._daemon.options

        self.oidMap = self._daemon.oidMap
        self.stats = Stats()

        # Command-line argument sanity checking
        self.processCaptureReplayOptions()
        self.session=None
        self._replayStarted = False
        if not self.options.replayFilePrefix:
            trapPort = self._preferences.options.trapport
            if not self._preferences.options.useFileDescriptor and trapPort < 1024:
                listen_ip = "ipv6" if ipv6_is_enabled() else "0.0.0.0"
                # Makes call to zensocket here (does an exec* so it never returns)
                self._daemon.openPrivilegedPort('--listen', '--proto=udp', '--port=%s:%d' % (listen_ip, trapPort))
                self.log("Unexpected return from openPrivilegedPort. Exiting.")
                sys.exit(1)

            # Start listening for SNMP traps
            self.log.info("Starting to listen on SNMP trap port %s", trapPort)
            self.session = netsnmp.Session()
            listening_protocol = "udp6" if ipv6_is_enabled() else "udp"
            if self._preferences.options.useFileDescriptor is not None:
                # open port 1162, but then dup fileno onto it
                listening_address = listening_protocol + ':1162'
                fileno = int(self._preferences.options.useFileDescriptor)
            else:
                listening_address = '%s:%d' % (listening_protocol, trapPort)
                fileno = -1
            self._pre_parse_callback = _pre_parse_factory(self._pre_parse)
            debug = self.log.isEnabledFor(logging.DEBUG)
            self.session.awaitTraps(listening_address, fileno, self._pre_parse_callback, debug)
            self.session.callback = self.receiveTrap
            twistedsnmp.updateReactor()
Example #6
0
def main():
    name = 'localhost'
    community = 'public'
    if len(sys.argv) >= 2:
        name = sys.argv[1]
    oid = (1, 3, 6, 1, 2, 1, 25, 4, 2, 1, 2)
    t = Table(version=netsnmp.SNMP_VERSION_2c,
              peername=name,
              community=community,
              community_len=len(community))
    t.open()
    t.getTable(oid)
    twistedsnmp.updateReactor()
    reactor.run()
Example #7
0
def main():
    name = 'localhost'
    community = 'public'
    if len(sys.argv) >= 2:
        name = sys.argv[1]
    oids = sys.argv[2:]
    g = Getter(version=netsnmp.SNMP_VERSION_1,
               peername=name,
               community=community,
               community_len=len(community))
    oids = [tuple(map(int, oid.strip('.').split('.'))) for oid in oids]
    g.open()
    g.get(oids)
    twistedsnmp.updateReactor()
    reactor.run()