CentOS 7 - 通配符接口脚本?

CentOS 7 - 通配符接口脚本?

CentOS 7 是否有内置机制可以使用经典网络脚本配置网络接口,同时允许在设备名称中使用通配符?

大致如下:

/etc/sysconfig/network-scripts/ifcfg-*

...将适用于每个检测到的设备。

这里的用例是我正在构建一个 CentOS 7 映像,该映像将在各种硬件上使用。某些硬件具有多个 NIC,其他硬件则具有单个 NIC。因此,当映像第一次启动时,任何预先配置的脚本不一定与/etc/sysconfig/network-scripts/当前设备名称匹配。

实际的 ifcfg 脚本和网络并不陌生,它是一个简单的 IPv4/DHCP 网络。

我试图避免的一些事情(如果可能的话):

  • 网络管理员。
  • 更改 udev 的默认接口名称。

预配置是这里的主要目标。谢谢!

答案1

我不认为有任何通配符方法可以做到这一点,但您可能有一个运行的 init 脚本或 systemd 单元查找/sys/class//net(或执行ip link)并为找到的每个接口的网络初始化可以创建(如果丢失)必要的 ifcfg- 文件。

就像是

#!/bin/bash

create_dev()
{
  dev=$1

  echo IPV6INIT=yes
  echo IPV6_AUTOCONF=yes
  echo BOOTPROTO=dhcp
  echo DEVICE=$dev
  echo ONBOOT=yes
}

for dev in *
do
  CFG=/etc/sysconfig/network-scripts/ifcfg-$dev

  if [ ! -e $CFG ]
  then
    create_dev $dev > $CFG
  fi
done

对于包装器来说可能就足够了。然后,您需要创建必要的单元或初始化脚本,以确保它在启动过程中足够早地运行。

答案2

虽然 Stephen Harris 的答案是一个不错的解决方案,但它故意避免使用网络管理器,而网络管理器现在是传统 Linux 发行版的标准。虽然传统的初始化脚本目前仍适用于网络设备,但对它们的支持正在逐步取消,取而代之的是网络管理器。这就是为什么它是默认值的原因。

我强烈建议您习惯网络管理器,因为传统的初始化脚本将来将会消失(在几乎所有常见的发行版中)。在这种情况下,您可以轻松地利用它来发挥自己的优势。

网络经理将要尝试使用默认 DHCP 设置启动新接口(默认情况下,正常情况下)。他们nmcli con show立即被列在下面。网络管理器将自动为您生成 ifcfg-* 文件。如果您在环境中使用 DHCP,则这不会成为问题。如果您使用静态,则需要做更多的工作。

man nmcli-examples

相关内容