diff --git a/modules/interfaces.py b/modules/interfaces.py index 03b08b4..64f35a9 100644 --- a/modules/interfaces.py +++ b/modules/interfaces.py @@ -1,5 +1,6 @@ def parse_interface_data(data): interface_table = [] + current_interface_entry = None if "data" in data: raw_data = data["data"] @@ -7,17 +8,18 @@ def parse_interface_data(data): for line in raw_data.split("\n"): if line.startswith("Interface") and "IP Address" in line: continue - if line.startswith("Codes:"): continue - if line.strip().startswith('-'): continue + if not line.strip(): + current_interface_entry = None + continue - if line.strip(): + if not line[0].isspace(): interface_info = line.split() if len(interface_info) >= 6: - interface_table.append({ + current_interface_entry = { "interface": interface_info[0], "ip_address": interface_info[1] if interface_info[1] != '-' else 'N/A', "mac_address": interface_info[2], @@ -25,6 +27,21 @@ def parse_interface_data(data): "mtu": interface_info[4], "status": interface_info[5], "description": " ".join(interface_info[6:]) - }) + } + interface_table.append(current_interface_entry) + else: + current_interface_entry = None + + elif current_interface_entry and line[0].isspace(): + additional_ip = line.strip() + + if len(additional_ip.split()) == 1 and ('/' in additional_ip or ':' in additional_ip): + if current_interface_entry["ip_address"] == 'N/A': + current_interface_entry["ip_address"] = additional_ip + else: + current_interface_entry["ip_address"] += f"
{additional_ip}" + + else: + current_interface_entry = None return interface_table \ No newline at end of file