首页 > 解决方案 > Linux:获取“用户友好”的网络接口名称

问题描述

我正在编写一个程序,用户应在 Linux 下选择一些网络接口,如下所示:

Please select a network card:
1)  enp2s0
2)  wlan3
3)  ppp2

到目前为止,我没有问题。

但是,我希望用户看到更多“描述性”名称,如下所示:

Please select a network card:
1)  PCI Ethernet (enp2s0)
2)  Wireless LAN (wlan3)
3)  Dial-up connection (ppp2)

问题:

我知道 Gnome 桌面在网络状态下拉菜单中列出了网络接口名称,例如“PCI 以太网”。所以必须有一些方法来获取某个网络接口的“描述性”名称。

标签: linuxnetworkingnetwork-interface

解决方案


Linux 是否知道网络接口的“友好”名称?

不。

如果没有:有没有办法从界面名称中猜出用户友好的名称,并且可靠性相当高?

您可能可以做出您建议的概括。如果您使用的是systemd基于系统的系统,请查看systemd 网络命名方案,它显示了用于不同接口类型的前缀:

+--------+------------------------------------+
| Prefix |            Description             |
+--------+------------------------------------+
| en     | Ethernet                           |
| ib     | InfiniBand                         |
| sl     | serial line IP (slip)              |
| wl     | Wireless local area network (WLAN) |
| ww     | Wireless wide area network (WWAN   |
+--------+------------------------------------+

也许结合 /sys/class/net/.../type 的代码?

我不确定这些type信息是否会有所帮助。例如,以太网和无线接口都显示type1. 另一方面,您可以肯定地识别 ppp 接口,例如,使用此值。

的可能值在type中可用if_arp.h


推荐阅读