编辑
2023-05-15
运维
00
请注意,本文编写于 492 天前,最后修改于 492 天前,其中某些信息可能已经过时。

静态IP地址是指不会随着时间和网络拓扑变化而改变的IP地址。与之相对的是动态IP地址,动态IP地址通常由DHCP服务器分配,可能在不同的时间分配给不同的设备。在某些情况下,需要使用静态IP地址,例如需要对网络设备进行访问控制,需要进行端口转发,或需要对特定设备进行远程访问等。

在Linux系统中,通过手动编辑配置文件的方式来设置静态IP地址,但这种方式往往比较繁琐,容易出错。因此,编写一个静态IP配置脚本可以大大简化这个过程,提高效率,减少错误。

下面是一个基于RHEL 9的单节点示例脚本:

#!/bin/bash # 设置静态IP地址的脚本 # 修改接口和连接名为ens160 interface=ens160 connection=ens160 # 修改IP地址、子网掩码、网关和DNS ipaddr=192.168.1.181 netmask=255.255.255.0 gateway=192.168.1.1 dns=8.8.8.8 # 使用nmcli命令修改网络配置 sudo nmcli con modify "$connection" ifname "$interface" ipv4.method manual ipv4.addresses "$ipaddr"/24 gw4 "$gateway" sudo nmcli con modify "$connection" ipv4.dns "$dns" # 重启连接 sudo nmcli con down "$connection" sudo nmcli con up "$connection" # 显示结果 echo "静态IP地址已设置为:$ipaddr" echo "子网掩码已设置为:$netmask" echo "网关已设置为:$gateway" echo "DNS已设置为:$dns"

在脚本中,首先定义了需要修改的网络接口和连接名,以及需要配置的IP地址、子网掩码、网关和DNS。然后使用nmcli命令来修改连接配置,包括设置网络连接的IP地址、子网掩码、网关和DNS。最后重启连接,以使新的配置生效。

基于上述思路,可以写出一个多节点的脚本:

#!/bin/bash # 定义多节点主机名和IP地址 nodes=( node1:192.168.1.181 node2:192.168.1.182 node3:192.168.1.183 ) # 循环遍历每个节点,执行静态IP配置脚本 for node in "${nodes[@]}"; do # 从节点信息中分离主机名和IP地址 hostname=$(echo "$node" | cut -d ':' -f1) ipaddr=$(echo "$node" | cut -d ':' -f2) # 在远程节点上执行静态IP配置脚本 ssh "$hostname" bash -s << EOF # 配置静态IP地址 interface=enp0s3 connection=enp0s3 netmask=255.255.255.0 gateway=192.168.1.1 dns=4.2.2.2 sudo nmcli con modify "\$connection" ifname "\$interface" ipv4.method manual ipv4.addresses "\$ipaddr"/24 gw4 "\$gateway" sudo nmcli con modify "\$connection" ipv4.dns "\$dns" sudo nmcli con down "\$connection" sudo nmcli con up "\$connection" echo "静态IP地址已设置为:\$ipaddr" echo "子网掩码已设置为:\$netmask" echo "网关已设置为:\$gateway" echo "DNS已设置为:\$dns" EOF done

上述脚本可以实现在多个节点上配置静态IP地址的自动化部署。其具体工作流程如下:

1、首先,定义了一个包含多个节点信息的数组,其中每个元素都是一个由主机名和IP地址组成的字符串。这些信息被保存在 nodes 变量中。

2、接着,使用 for 循环遍历 nodes 数组中的每个元素。在循环体内部,使用 cut 命令从节点信息字符串中分离出主机名和IP地址,并将它们保存在 hostnamehostname 和 ipaddr 变量中。

3、然后,使用 ssh 命令远程连接到当前节点,并在远程节点上执行脚本。在脚本中,首先定义了一些需要用到的变量,包括接口名、连接名、子网掩码、网关和 DNS 服务器的 IP 地址。

4、使用 nmcli 命令修改网络配置,将静态 IP 地址、子网掩码、网关和 DNS 服务器的 IP 地址分别设置为变量 ipaddripaddr、netmask、gatewaygateway 和 dns 中指定的值。这里采用了静态 IP 地址分配方式,即将 IP 地址和子网掩码合并成一个 CIDR 地址,例如:192.168.1.181/24。

5、使用 nmcli 命令使配置生效,并将网络连接断开并重新连接以更新 IP 地址。

6、最后,输出配置结果,包括设置的静态 IP 地址、子网掩码、网关和 DNS 服务器的 IP 地址。

通过以上步骤,该脚本可以自动遍历多个节点,远程连接到每个节点,并执行静态 IP 地址配置脚本。这样就可以实现在多个节点上快速、自动地配置静态 IP 地址,提高部署效率和减少手动操作的错误。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Gustav

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!