nmcli 从连接名称获取接口的实际名称(例如 tun0)

nmcli 从连接名称获取接口的实际名称(例如 tun0)

1.) 我想从 nmcli 使用的连接名称获取接口的实际名称。就我而言,我有多个 VPN 连接,我们将其中一个称为my-vpn。现在,我nmcli con up id my-vpn这样做了,VPN 连接已启动,并被分配了一个实际的接口名称,比方说tun0

具体来说,我想tun0从命令中获取 ,仅使用名称my-vpn,或者使用nmcliipifconfig类似的默认网络工具。

我尝试了例如nmcli -g connection.interface-name connection show my-vpn,它只给我my-vpn作为输出,我本来希望得到接口的名称tun0

2.) 或者,是否可以(简单地)将tun0设备重命名为my-vpn?我想向我的 VPN 连接添加路由,而不必关心它们的启动顺序(因为它们按照启动顺序枚举为 、 等)tun0tun1

答案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

相关内容