Exemple #1
0
 def snmp_v1_get(self, address, community, oid):
     """
     Perform SNMP v1 GET and return result
     :param address: IP address
     :param community: SNMP v2c community
     :param oid: Resolved oid
     :returns: Result as a string, or None, when no response
     """
     self.logger.debug("SNMP v1 GET %s %s", address, oid)
     try:
         result = yield snmp_get(
             address=address,
             oids=oid,
             community=community,
             version=SNMP_v1,
             tos=config.activator.tos,
             ioloop=self.service.ioloop,
         )
         self.logger.debug("SNMP GET %s %s returns %s", address, oid,
                           result)
     except SNMPError as e:
         metrics["error", ("type", "snmp_v1_error")] += 1
         result = None
         self.logger.debug("SNMP GET %s %s returns error %s", address, oid,
                           e)
     raise tornado.gen.Return(result)
Exemple #2
0
 def poll_worker(self, community, oid, timeout, version):
     while True:
         a = yield self.queue.get()
         if a:
             for c in community:
                 t0 = perf_counter()
                 try:
                     r = yield snmp_get(
                         address=a, oids=oid, community=c, version=version, timeout=timeout
                     )
                     s = "OK"
                     dt = perf_counter() - t0
                     mc = c
                     break
                 except SNMPError as e:
                     s = "FAIL"
                     r = str(e)
                     dt = perf_counter() - t0
                     mc = ""
                 except Exception as e:
                     s = "EXCEPTION"
                     r = str(e)
                     dt = perf_counter() - t0
                     mc = ""
                     break
             if self.convert:
                 try:
                     r = MACAddressParameter().clean(r)
                 except ValueError:
                     pass
             self.stdout.write("%s,%s,%s,%s,%r\n" % (a, s, dt, mc, r))
         self.queue.task_done()
         if not a:
             break
Exemple #3
0
 def run():
     try:
         self.result = yield snmp_get(
             address=self.script.credentials["address"],
             oids=oids,
             community=str(self.script.credentials["snmp_ro"]),
             tos=self.script.tos,
             ioloop=self.get_ioloop(),
             udp_socket=self.get_socket(),
             version=version,
             raw_varbinds=raw_varbinds)
         self.timeouts = self.timeouts_limit
     except SNMPError as e:
         if e.code == TIMED_OUT:
             if self.timeouts_limit:
                 self.timeouts -= 1
                 if not self.timeouts:
                     raise self.FatalTimeoutError()
             raise self.TimeOutError()
         else:
             raise