| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #!/usr/bin/env python3
- import subprocess
- def get_connected() -> list:
- ret = []
- IGNORED_PREFIXES = ("lo", "docker", "br-", "veth", "virbr")
- IGNORED_TYPES = {"loopback", "bridge"}
- cmd = r"""
- nmcli -t -f DEVICE,TYPE,STATE,NAME connection show --active
- """
- connected = subprocess.run(
- cmd,
- shell = True,
- text = True,
- capture_output = True,
- check = True,
- )
- if connected.check_returncode():
- return
- for line in connected.stdout.strip().split("\n"):
- parts = line.split(":")
- device = parts[0]
- conn_type = parts[1]
- state = parts[2]
- name = parts[3]
- if conn_type in IGNORED_TYPES:
- continue
- if any(device.startswith(prefix) for prefix in IGNORED_PREFIXES):
- continue
- ret.append({
- "device": device,
- "type": conn_type,
- "state": state,
- "name": name,
- })
- return ret
- def yuck() -> str:
- return get_connected()
- if __name__ == "__main__":
- print(yuck())
|