nmcli
在 CentOS 7 中可以使用哪些特定的命令序列来有效配置静态 IP 网络?
下面显示的四个步骤过程确实可以有效地配置静态 IP 网络。
但下面的过程依赖于配置文件,这可能不容易适合以后的自动化脚本方法。如果我们继续使用下面所示的配置文件方法,我会想象很多过于复杂的脚本。例如,该UUID
行需要在脚本中进行特殊处理,只需复制配置文件并重新启动计算机即可。
相反,我想要一系列nmcli
可以手动输入终端的特定命令,并且这也可以使以后更轻松地设计 bash 脚本。
这是当前有效的手动流程:
1.) 该设备eno1
是在自动安装过程中创建的。
2.) 将具有给定网络掩码的 IP 地址分配给eno1
。
ip addr 12.34.567.8xx/29 dev eno1
3.) 编辑配置文件:
$ vi /etc/sysconfig/network-scripts/ifcfg-eno1
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno1"
UUID="some-very-long-complex-string"
DEVICE="eno1"
ONBOOT="yes"
DNS1=aa.aa.aa.aa
DNS2=aa.aa.bb.bb
IPADDR=12.34.567.8xx
NETMASK=255.255.255.248
PREFIX=29
GATEWAY=12.34.567.8yy
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
NM_CONTROLLED="no"
4.) 然后保存文件并重新启动计算机。
请注意,12.34.567.8xx
和12.34.567.8yy
是公共 IP 地址,12.34.567.8__
表示 IP 和网关的前 8 个字符相同。
另请注意,BOOTPROTO=static
并且NM_CONTROLLED=no
需要以命令的任何结果结束nmcli
。
哪些特定的命令序列nmcli
可以有效替代上述 4 个步骤过程?
答案1
尝试以下操作::
nmcli con mod eno1 ipv4.addresses 12.345.67.8xx/29
nmcli con mod eno1 ipv4.gateway 12.34.567.8yy
nmcli con mod eno1 ipv4.dns "aa.aa.aa.aa bb.bb.bb.bb"
nmcli con mod eno1 ipv4.method manual
nmcli con mod eno1 connection.autoconnect yes
重新启动,它应该可以工作。
如果您不知道网络连接的名称,可以运行:
CON="$(nmcli -f NAME -m multiline show con | awk '{ print $2; }')"
在上面的命令中使用"$CON"
而不是。eno1
例如:
nmcli con mod "$CON" ipv4.addresses 12.345.67.8xx/29
这只适用于只有一个连接的情况。如果您的虚拟机有多个网络连接,那么您需要在上面添加一些逻辑来确定使用哪一个。