import requests import json import subprocess import os import sys from time import sleep from signal import signal, SIGINT # response = requests.get("http://127.0.0.1:5000/inventory") # if response.status_code != 200: # print(f"get inventory failed: {response.reason}") # exit() # # print(json.dumps(response.json(), indent=4)) def exit_gracefully(signal_received, frame): print("\n\nexiting gracefully") exit(0) signal(SIGINT, exit_gracefully) while True: query_params = { "device": "ios-xe-mgmt-latest.cisco.com", "type": "csr", "port": "8181", "username": "developer", "password": "C1sco12345", } response = requests.get("http://127.0.0.1:5000/interface_counters", params=query_params) if response.status_code != 200: print(f"get interface counters failed: {response.reason}") exit() counters = response.json() print(json.dumps(counters, indent=4)) intf_counters_list = sorted([(k, v) for k, v in counters.items()]) subprocess.call("clear" if os.name == "posix" else "cls") print("__Name________________ __Rx Packets__ _____Rx Octets__ __Tx Packets__ _____Tx Octets__") for intf_name, intf_counters in intf_counters_list: print( f" {intf_name:<20}" + f" {intf_counters['rx_unicast_packets']:>14}" + f" {intf_counters['rx_octets']:>16}" + f" {intf_counters['tx_unicast_packets']:>14}" + f" {intf_counters['tx_octets']:>16}" ) print("\n\n") for remaining in range(10, 0, -1): sys.stdout.write("\r") sys.stdout.write(f"Refresh: {remaining:2d} seconds remaining.") sys.stdout.flush() sleep(1) print(" ... updating counters ...")