diff --git a/routermon/routermon.py b/routermon/routermon.py index 596b630..85218c4 100644 --- a/routermon/routermon.py +++ b/routermon/routermon.py @@ -29,6 +29,11 @@ def convert_int(d: dict) -> dict: d[k] = int(v) return d +def convert_int_list(l: list[dict]) -> list[dict]: + for n,d in enumerate(l): + l[n] = convert_int(d) + return l + def main(): INTERVAL = int(env['INTERVAL']) @@ -43,20 +48,20 @@ def main(): plaintext_login=True) api = connection.get_api() - run: SignalHandler = SignalHandler() - last = 0 - if_stats_old = convert_int(api.get_resource('/interface/ethernet').call('print', {'proplist': 'name,rx-bytes,tx-bytes'})) - - ### MAIN LOOP ### - while run: + ############################## + ########## MAIN LOOP ######### + ############################## + last: float = 0 + handler: SignalHandler = SignalHandler() + if_stats_old = convert_int_list(api.get_resource('/interface/ethernet').call('print', {'proplist': 'name,rx-bytes,tx-bytes'})) + while handler.running: try: - now = time.time() + now:float = time.time() if_points: list[Point] = [] - if_stats: list[dict] = api.get_resource('/interface/ethernet').call('print', {'proplist': 'name,rx-bytes,tx-bytes'}) + if_stats: list[dict] = convert_int_list(api.get_resource('/interface/ethernet').call('print', {'proplist': 'name,rx-bytes,tx-bytes'})) hw_stats: dict[str,str] = convert_int(api.get_resource('/system/resource').call('print', {'proplist':'uptime,cpu-load,total-memory,free-memory'})[0]) - # calcolo della velocita' interfaccia a ogni ciclo - for n,d in enumerate(if_stats): - if_stats[n] = convert_int(d) + # Calcolo della velocita' interfaccia a ogni ciclo + for n, d in enumerate(if_stats): if_stats[n]['rx-rate'] = int((if_stats[n]['rx-bytes']-if_stats_old[n]['rx-bytes'])/(now-last)) if_stats[n]['tx-rate'] = int((if_stats[n]['tx-bytes']-if_stats_old[n]['tx-bytes'])/(now-last)) if_points.append( @@ -67,11 +72,13 @@ def main(): ) write_client.write(record=if_points) + # Risorse del router hw_point = Point('resources') for k,v in hw_stats.items(): hw_point.field(k,v) write_client.write(record=hw_point) - + + # Salvo ultimo punto per il giro successivo if_stats_old = if_stats last = time.time() LOGGER.debug(f"\nInterfaces: {json.dumps(if_stats, indent = 2)}") @@ -80,8 +87,9 @@ def main(): except Exception as e: print(f"Unexpected exception: [{e}]") return 1 - ### END MAIN LOOP ### - + ############################## + ###### END MAIN LOOP ######### + ############################## connection.disconnect() return 0