1.) 我想从 nmcli 使用的连接名称获取接口的实际名称。就我而言,我有多个 VPN 连接,我们将其中一个称为my-vpn
。现在,我nmcli con up id my-vpn
这样做了,VPN 连接已启动,并被分配了一个实际的接口名称,比方说tun0
。
具体来说,我想tun0
从命令中获取 ,仅使用名称my-vpn
,或者使用nmcli
、ip
或ifconfig
类似的默认网络工具。
我尝试了例如nmcli -g connection.interface-name connection show my-vpn
,它只给我my-vpn
作为输出,我本来希望得到接口的名称tun0
。
2.) 或者,是否可以(简单地)将tun0
设备重命名为my-vpn
?我想向我的 VPN 连接添加路由,而不必关心它们的启动顺序(因为它们按照启动顺序枚举为 、 等)tun0
。tun1
答案1
您可以nmcli
与 一起使用ip
,通过匹配 IPv4 地址从连接名称中获取接口名称:
ip -br addr show to "$(nmcli -g ip4.address con show <connection-name>)" | cut -d ' ' -f 1
答案2
NetworkManager 有此信息,但似乎仅在设备上可用。因此,首先获取设备,然后查找它:
nmcli -g GENERAL.DEVICES con show <connection-name> | while read dev; do nmcli -g GENERAL.IP-IFACE device show "$dev"; done