Есть ли что-то вроде lsblk для сетевых интерфейсов?

10

Есть ли команда Linux, которая визуализирует сконфигурированные сетевые интерфейсы в виде дерева, как это lsblkделает для блочных устройств?

Вывод такой программы может, например, выглядеть так (подход снизу вверх):

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

или это (нисходящий подход):

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

Примечание: я не ищу инструмент, который производит этот точный вывод, а скорее спрашиваю, знает ли кто-нибудь команду с похожим результатом.

jlauinger
источник
ты пробовал ip addr??
Сидахмед
да, но ip addrвозвращает плоский список сетевых интерфейсов, а не иерархическое представление дерева
jlauinger

Ответы:

5

У меня есть поиск в существующих утилитах, но я не нашел ни одного. Тем не менее желаемый функционал полезен с моей точки зрения. Поэтому я сделал простой скрипт bash, который анализирует ip link showкоманду и печатает что-то похожее на желаемый результат в вопросе:

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

Я отправил скрипт на github: https://github.com/zabojcampula/show-net-devices-tree

Забой Кампула
источник