linux - 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)
问题:
- Linux 是否知道网络接口的这些描述性名称?
- 如果是:我怎样才能得到这些名字?
- 如果没有:有没有办法从界面名称中猜出用户友好的名称,并且可靠性相当高?
示例:“ppp*”=>“拨号连接”;"wl*" => "Wireless network"
也许结合来自的代码/sys/class/net/.../type
? - 如果是:我在哪里可以找到可能的接口名称列表?
我知道 Gnome 桌面在网络状态下拉菜单中列出了网络接口名称,例如“PCI 以太网”。所以必须有一些方法来获取某个网络接口的“描述性”名称。
解决方案
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
信息是否会有所帮助。例如,以太网和无线接口都显示type
为1
. 另一方面,您可以肯定地识别 ppp 接口,例如,使用此值。
的可能值在type
中可用if_arp.h
。
推荐阅读
- discord - 我无法理解如何在 discord.py 中使用此代码
- angular - 用于管理员/用户场景的 Angular 模块
- javascript - 如何使用 JSON 从前到后更新具有特定值的目标文件,保持其他值不变,?节点.js
- javascript - Javascript:如何合并两个对象并对同一个键的值求和?
- javascript - 将第三方 js 应用程序集成到 vue.js2
- php - 从表单帖子更新数据库
- python - Plotly 'Dash Auth' 登录引发 401 错误。如何获得200?
- java - 为什么默认 maven 使用这么旧版本的插件?
- python - selenium,python:尝试在不建立连接的情况下运行命令(geckodriver)
- java - Android E/SQLiteDatabase 上的 SQLite:插入日期时出错=05/04/2021 时间=60000.0