From 38bfa7c133235f0768d0531724aca8ca8e7df256 Mon Sep 17 00:00:00 2001 From: Blackwhitebear8 Date: Mon, 9 Jun 2025 20:48:29 +0200 Subject: [PATCH] Delete bgp-summ.py --- bgp-summ.py | 280 ---------------------------------------------------- 1 file changed, 280 deletions(-) delete mode 100644 bgp-summ.py diff --git a/bgp-summ.py b/bgp-summ.py deleted file mode 100644 index d212817..0000000 --- a/bgp-summ.py +++ /dev/null @@ -1,280 +0,0 @@ -import json -import subprocess -from jinja2 import Template -from flask import Flask, render_template_string, jsonify - -app = Flask(__name__) - -def run_curl_command(): - curl_command = [ - "curl", "-k", "--location", "--request", "POST", "https://ip:port/show", - "--form", "data={\"op\": \"show\", \"path\": [\"bgp\", \"summ\"]}", - "--form", "key=key" - ] - response = subprocess.check_output(curl_command, text=True) - return json.loads(response) - -def parse_bgp_data(data): - ipv4_section = "" - ipv6_section = "" - ipv4_info = {} - ipv6_info = {} - - if "data" in data: - raw_data = data["data"] - - if "IPv4 Unicast Summary" in raw_data: - ipv4_raw = raw_data.split("IPv4 Unicast Summary (VRF default):")[1] - ipv4_section = ipv4_raw.split("IPv6 Unicast Summary (VRF default):")[0].strip() - ipv4_info = extract_bgp_info(ipv4_raw) - - if "IPv6 Unicast Summary" in raw_data: - ipv6_raw = raw_data.split("IPv6 Unicast Summary (VRF default):")[1].strip() - ipv6_section = ipv6_raw - ipv6_info = extract_bgp_info(ipv6_raw) - - def process_peers(peer_data): - peers = [] - for line in peer_data.split("\n"): - if line.strip().startswith("Neighbor"): - continue - if line.strip(): - peer_info = line.split() - if len(peer_info) >= 12: - peers.append({ - "neighbor": peer_info[0], - "version": peer_info[1], - "as_number": peer_info[2], - "msg_received": peer_info[3], - "msg_sent": peer_info[4], - "table_version": peer_info[5], - "in_queue": peer_info[6], - "out_queue": peer_info[7], - "up_down": peer_info[8], - "state_pfx_rcd": peer_info[9], - "prefix_sent": peer_info[10], - "description": " ".join(peer_info[11:]) - }) - return peers - - ipv4_peers = process_peers(ipv4_section) - ipv6_peers = process_peers(ipv6_section) - - return ipv4_info, ipv4_peers, ipv6_info, ipv6_peers - -def extract_bgp_info(raw_data): - lines = raw_data.split("\n") - info = {} - for line in lines: - if "BGP router identifier" in line: - parts = line.split(",") - info["router_id"] = parts[0].split("identifier")[1].strip() - info["local_as"] = parts[1].split("number")[1].strip().split(" ")[0] - if "vrf-id" in parts[-1]: - info["vrf_id"] = parts[-1].split("vrf-id")[1].strip() - if "BGP table version" in line: - info["table_version"] = line.split("version")[1].strip() - if "RIB entries" in line: - parts = line.split(",") - info["rib_entries"] = parts[0].split("entries")[1].strip() - info["rib_memory"] = parts[1].split("using")[1].strip() - if "Peers" in line: - parts = line.split(",") - info["peers"] = parts[0].split("Peers")[1].strip() - info["peers_memory"] = parts[1].split("using")[1].strip() - return info - -def generate_html_table(ipv4_info, ipv4_peers, ipv6_info, ipv6_peers): - html_template = """ - - - - - - BGP Peer Summary - - - - - -
-

Core1.Doet.pixelHosting.nl BGP summary

- -

IPv4 Unicast Summary

-

BGP Router ID: {{ ipv4_info.router_id }}, Local AS Number: {{ ipv4_info.local_as }} VRF ID: {{ ipv4_info.vrf_id }}

-

BGP Table Version: {{ ipv4_info.table_version }}

-

RIB Entries: {{ ipv4_info.rib_entries }}, using {{ ipv4_info.rib_memory }}

-

Peers: {{ ipv4_info.peers }}, using {{ ipv4_info.peers_memory }}

- - - - - - - - - - - - - - - - - - - - {% for peer in ipv4_peers %} - - - - - - - - - - - - - - - {% endfor %} - -
NeighborVersion (V)AS NumberMessages ReceivedMessages SentTable VersionInbound Queue (InQ)Outbound Queue (OutQ)Up/DownState/PfxRcdPrefix Sent (PfxSnt)Description
{{ peer.neighbor }}{{ peer.version }}{{ peer.as_number }}{{ peer.msg_received }}{{ peer.msg_sent }}{{ peer.table_version }}{{ peer.in_queue }}{{ peer.out_queue }}{{ peer.up_down }}{{ peer.state_pfx_rcd }}{{ peer.prefix_sent }}{{ peer.description }}
- -

IPv6 Unicast Summary

-

BGP Router ID: {{ ipv6_info.router_id }}, Local AS Number: {{ ipv6_info.local_as }} VRF ID: {{ ipv6_info.vrf_id }}

-

BGP Table Version: {{ ipv6_info.table_version }}

-

RIB Entries: {{ ipv6_info.rib_entries }}, using {{ ipv6_info.rib_memory }}

-

Peers: {{ ipv6_info.peers }}, using {{ ipv6_info.peers_memory }}

- - - - - - - - - - - - - - - - - - - - {% for peer in ipv6_peers %} - - - - - - - - - - - - - - - {% endfor %} - -
NeighborVersion (V)AS NumberMessages ReceivedMessages SentTable VersionInbound Queue (InQ)Outbound Queue (OutQ)Up/DownState/PfxRcdPrefix Sent (PfxSnt)Description
{{ peer.neighbor }}{{ peer.version }}{{ peer.as_number }}{{ peer.msg_received }}{{ peer.msg_sent }}{{ peer.table_version }}{{ peer.in_queue }}{{ peer.out_queue }}{{ peer.up_down }}{{ peer.state_pfx_rcd }}{{ peer.prefix_sent }}{{ peer.description }}
- -
- - - - - - - - - - """ - - template = Template(html_template) - html_output = template.render(ipv4_info=ipv4_info, ipv4_peers=ipv4_peers, ipv6_info=ipv6_info, ipv6_peers=ipv6_peers) - return html_output - -@app.route('/') -def bgp_peer_summary(): - data = run_curl_command() - - ipv4_info, ipv4_peers, ipv6_info, ipv6_peers = parse_bgp_data(data) - - html_output = generate_html_table(ipv4_info, ipv4_peers, ipv6_info, ipv6_peers) - - return render_template_string(html_output) - -@app.route('/json') -def bgp_peer_summary_json(): - data = run_curl_command() - - ipv4_info, ipv4_peers, ipv6_info, ipv6_peers = parse_bgp_data(data) - - json_data = { - "ipv4_info": ipv4_info, - "ipv4_peers": ipv4_peers, - "ipv6_info": ipv6_info, - "ipv6_peers": ipv6_peers - } - - return jsonify(json_data) - -if __name__ == '__main__': - app.run(host='0.0.0.0', port=5000, debug=True) \ No newline at end of file