如何更改网络接口名称

Bry*_*yon 5 rhel nmcli

我正在尝试编写一个 bash 脚本来配置多个网络接口,但在某些 NIC 获取有线连接名称而不是设备名称时遇到问题。例如

$ nmcli dev status
DEVICE  TYPE      STATE      CONNECTION         
ens22   ethernet  connected  ens22              
ens18   ethernet  connected  Wired connection 2 
ens19   ethernet  connected  ens19              
ens20   ethernet  connected  Wired connection 1 
ens21   ethernet  connected  ens21              
lo      loopback  unmanaged  --     
Run Code Online (Sandbox Code Playgroud)

其影响是这些命令失败,因为它需要连接名称,而不是设备名称:

printf "\n${YELLOW}### Configure ens20: ###${NC}\n"
sudo nmcli con mod ens20 ipv4.addresses 10.70.20.254/24
sudo nmcli con mod ens20 ipv4.dns 8.8.8.8
sudo nmcli con mod ens20 ipv4.method manual
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 是什么导致只有某些接口的名称为“有线连接”?
  2. nmcli 中是否有一个选项可以使用接口名称来代替?
  3. 是否可以重命名连接?我尝试重命名连接属性,但只有修改连接而不是设备才能执行此操作。

这有效:

sudo nmcli connection modify "Wired connection 2" connection.id "ens18"
Run Code Online (Sandbox Code Playgroud)

这不起作用:

sudo nmcli device modify ens18 connection.id "ens18" 
Run Code Online (Sandbox Code Playgroud)

谢谢

tel*_*coM 4

在 NetworkManager 术语中,设备是 NIC(或 NIC 的虚拟抽象),连接一组网络配置参数,可以应用于任何合适的设备,除非专门限制为仅匹配特定设备。即使如此限制,连接和设备也是单独的配置对象

1.)Wired connection <number>是某些 GUI 工具(包括 RHEL 操作系统安装程序)使用的默认连接名称格式,而可能是使用但不指定名称<interface name>创建新连接时使用的默认名称 - 例如,如果您使用并且有没有可应用于该接口的现有连接定义。nmclinmcli device connect <interface name>

2.) 引用特定连接的唯一方法是通过其名称、UUID 或其 D-Bus 连接路径号(path <N>for/org/freedesktop/NetworkManager/Settings/<N>apath <N>for /org/freedesktop/NetworkManager/ActiveConnection/<N>)。

如果您想要一种快速的方法来引用“该设备上的活动连接是什么”,您可以创建一个像这样的 shell 函数:

nm_connection_of() {
    # $1 = name of network interface to query
    con_name=$(nmcli -g GENERAL.CONNECTION device show "$1")
    if [ "$con_name" = "" ]; then
        echo "ERROR: no connection associated with $1" >&2
        return 1
    fi
    echo "$con_name"
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

sudo nmcli connection modify "$(nm_connection_of ens18)" connection.id ens18
Run Code Online (Sandbox Code Playgroud)

请注意,网络接口当前可能根本不与任何连接关联,在这种情况下$(nm_connection_of <interface name>)将返回错误。

3.) 你自己已经回答了这个问题。

要重命名连接,您必须明确标识要重命名的连接,而不是可能与任意数量的可能连接关联或根本没有连接的设备。