Czy istnieje coś takiego jak lsblk dla interfejsów sieciowych?

10

Czy istnieje polecenie systemu Linux, które wizualizuje skonfigurowane interfejsy sieciowe w widoku drzewa, podobnie jak w lsblkprzypadku urządzeń blokowych?

Dane wyjściowe takiego programu mogą na przykład wyglądać tak (podejście oddolne):

eth0   
└─bond0
  ├─bond0.42
  │ └─br42
  └─bond0.43
    └─br43
eth1
└─bond0
  ├─bond0.42
  │ └─br42
  └─bond0.43
    └─br43
tap100i0
└─br42
tap100i1
└─br43
tap101i0
└─br42
tap101i1
└─br43

lub to (podejście odgórne):

br42
├─bond0.42
│ └─bond0
│   ├─eth0
│   └─eth1
├─tap100i0
└─tap101i0
br43
├─bond0.43
│ └─bond0
│   ├─eth0
│   └─eth1
├─tap100i1
└─tap101i1

Uwaga: nie szukam narzędzia, które generuje dokładnie ten wynik, ale pytam, czy ktoś zna polecenie o podobnym wyniku.

Jlauinger
źródło
próbowałeś ip addr?
Sidahmed
tak, ale ip addrzwraca płaską listę interfejsów sieciowych, a nie hierarchiczny widok drzewa
jlauinger

Odpowiedzi:

5

Poszukałem opcji w istniejących narzędziach, ale jej nie znalazłem. Niemniej jednak pożądana funkcjonalność jest przydatna z mojego punktu widzenia. Zrobiłem więc prosty skrypt bash, który analizuje ip link showpolecenie i wypisuje coś podobnego do pożądanego wyniku w pytaniu:

$ ./nettree.sh -u
eth3
    bond1
       bond0
eth2
    bond0
eth1
    bond0
eth0
lupen3
    bond1
       bond0
lo
lxcbr0
virbr0
veth6404e35
    docker0

Przekazałem skrypt do github: https://github.com/zabojcampula/show-net-devices-tree

Zaboj Campula
źródło