ネットワークインタフェースについてlsblkに似たものはありますか?

ネットワークインタフェースについてlsblkに似たものはありますか?

lsblkブロックデバイスのように設定されたネットワークインタフェースをツリービューで視覚化するLinuxコマンドはありますか?

たとえば、そのようなプログラムの出力は次のようになります(ボトムアップアプローチ)。

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

注:私は正確な出力を生成するツールを見つけるのではなく、同様の結果を出すコマンドを知っている人がいるかどうかを尋ねたいと思います。

答え1

既存のユーティリティでオプションを検索しましたが、何も見つかりませんでした。それでも私の観点からは必須機能が役に立つと思う。だからip link show私はコマンドを解析し、質問から必要な出力に似た内容を印刷するための単純なbashスクリプトを作成しました。

$ ./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

答え2

見つけました。既存の許可された回答私は長年この問題を直接使用してきました。

最近、VLANデバイスの階層、PPPoEなどを検出するために少し更新/調整することがわかりました。それでは基本的にもう一度書いてください

AAとは異なり、階層を構築するために、/sys/class/net/下と下のファイル/フォルダを調べます。/proc/net/

出力形式はtreeutfおよびですgraphviz。また、次のオプションを使用して-sリモートSSHホストを照会します。

$ ./nettree.sh 
meshif
└── bat0
    └── vswitch
        ├── hmv
        │   └── home
        └── iso
wlp2s0

$ ./nettree.sh -d -l
wlp2s0
home ━┓
      ┗━ hmv ━┓
              ┗━ vswitch ━┓
                          ┗━ bat0 ━┓
                                   ┗━ meshif
iso ━┓
     ┗━ vswitch ━┓
                 ┗━ bat0 ━┓
                          ┗━ meshif

$ ./nettree.sh -d -G
graph iftree {
  "wlp2s0"[label="wlp1s0", class="wireless"];
  "switch"[label="switch", class="switch"];
  "hmv"[label="homev", class="virtual"];
  "bat0"[label="bat0", class="virtual"];
  "home"[label="home", class="bond"];
  "iso"[label="iso", class="virtual"];
  "meshif"[label="usbxg2a", class="wireless"];
  "home" -- "hmv"[label=""];
  "hmv" -- "vswitch"[label=""];
  "iso" -- "vswitch"[label=""];
  "vswitch" -- "bat0"[label=""];
  "bat0" -- "meshif"[label=""];
}

関連情報