63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
import pyagentx3
|
|
import threading
|
|
import time
|
|
|
|
|
|
# --------------------------------------------
|
|
import logging
|
|
class NullHandler(logging.Handler):
|
|
def emit(self, record):
|
|
pass
|
|
logger = logging.getLogger('pyagentx3.main')
|
|
logger.addHandler(NullHandler())
|
|
# --------------------------------------------
|
|
|
|
|
|
|
|
# Updater class that set OID values
|
|
class TestData(pyagentx3.Updater):
|
|
def update(self):
|
|
self.set_INTEGER('1', self.data_store['cnt'])
|
|
|
|
class TestAgent(pyagentx3.Agent):
|
|
def __init__(self, agent_id='TestAgent', socket_path=None, data_store=None):
|
|
self.data_store = data_store
|
|
super().__init__(agent_id, socket_path)
|
|
|
|
def setup(self):
|
|
self.register('1.3.6.1.4.1.9676.1', TestData, freq=1, data_store=self.data_store)
|
|
|
|
class Data(threading.Thread):
|
|
def __init__(self):
|
|
self.data = {'cnt': 1}
|
|
self.stop_event = threading.Event()
|
|
threading.Thread.__init__(self)
|
|
|
|
def run(self):
|
|
while not self.stop_event.is_set():
|
|
self.data['cnt'] += 1
|
|
logger.info('data updated')
|
|
time.sleep(1.0)
|
|
logger.info('Data collector stopping')
|
|
|
|
def stop(self):
|
|
self.stop_event.set()
|
|
self.join()
|
|
|
|
|
|
# Main
|
|
pyagentx3.setup_logging()
|
|
try:
|
|
d = Data()
|
|
d.start()
|
|
a = TestAgent(data_store=d.data)
|
|
a.start()
|
|
except Exception as e:
|
|
print( "Unhandled exception:", e)
|
|
a.stop()
|
|
d.stop()
|
|
except KeyboardInterrupt:
|
|
a.stop()
|
|
d.stop()
|
|
|