Update modules/interfaces.py
This commit is contained in:
parent
3309c86c58
commit
e93d8e2ef3
1 changed files with 22 additions and 5 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
def parse_interface_data(data):
|
def parse_interface_data(data):
|
||||||
interface_table = []
|
interface_table = []
|
||||||
|
current_interface_entry = None
|
||||||
|
|
||||||
if "data" in data:
|
if "data" in data:
|
||||||
raw_data = data["data"]
|
raw_data = data["data"]
|
||||||
|
|
@ -7,17 +8,18 @@ def parse_interface_data(data):
|
||||||
for line in raw_data.split("\n"):
|
for line in raw_data.split("\n"):
|
||||||
if line.startswith("Interface") and "IP Address" in line:
|
if line.startswith("Interface") and "IP Address" in line:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if line.startswith("Codes:"):
|
if line.startswith("Codes:"):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if line.strip().startswith('-'):
|
if line.strip().startswith('-'):
|
||||||
continue
|
continue
|
||||||
|
if not line.strip():
|
||||||
|
current_interface_entry = None
|
||||||
|
continue
|
||||||
|
|
||||||
if line.strip():
|
if not line[0].isspace():
|
||||||
interface_info = line.split()
|
interface_info = line.split()
|
||||||
if len(interface_info) >= 6:
|
if len(interface_info) >= 6:
|
||||||
interface_table.append({
|
current_interface_entry = {
|
||||||
"interface": interface_info[0],
|
"interface": interface_info[0],
|
||||||
"ip_address": interface_info[1] if interface_info[1] != '-' else 'N/A',
|
"ip_address": interface_info[1] if interface_info[1] != '-' else 'N/A',
|
||||||
"mac_address": interface_info[2],
|
"mac_address": interface_info[2],
|
||||||
|
|
@ -25,6 +27,21 @@ def parse_interface_data(data):
|
||||||
"mtu": interface_info[4],
|
"mtu": interface_info[4],
|
||||||
"status": interface_info[5],
|
"status": interface_info[5],
|
||||||
"description": " ".join(interface_info[6:])
|
"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"<br>{additional_ip}"
|
||||||
|
|
||||||
|
else:
|
||||||
|
current_interface_entry = None
|
||||||
|
|
||||||
return interface_table
|
return interface_table
|
||||||
Loading…
Add table
Add a link
Reference in a new issue