63 lines
1.4 KiB
Python
Raw Normal View History

2025-02-19 21:12:57 +01:00
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()