Linux静态IP自动配置脚本

科技   科技   2024-09-13 18:02   河北  

      你好,我是李逸皓,我的梦想是:运维,永不背锅!

放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ 

开启Linux新时代

冷门但好用的Linux网络工具

yum源已成历史,Linux又一次蜕变

又一款Linux发行版,Kali Linux迎来劲敌

开源!最骚的Linux对象存储



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

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

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

#!/bin/bash# 设置静态IP地址的脚本# 修改接口和连接名为ens160interface=ens160connection=ens160# 修改IP地址、子网掩码、网关和DNSipaddr=192.168.1.181netmask=255.255.255.0gateway=192.168.1.1dns=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"EOFdone
上述脚本可以实现在多个节点上配置静态IP地址的自动化部署。其具体工作流程如下:
1、首先,定义了一个包含多个节点信息的数组,其中每个元素都是一个由主机名和IP地址组成的字符串。这些信息被保存在 nodes 变量中。
2、接着,使用 for 循环遍历 nodes 数组中的每个元素。在循环体内部,使用 cut 命令从节点信息字符串中分离出主机名和IP地址,并将它们保存在 $hostname 和 $ipaddr 变量中。
3、然后,使用 ssh 命令远程连接到当前节点,并在远程节点上执行脚本。在脚本中,首先定义了一些需要用到的变量,包括接口名、连接名、子网掩码、网关和 DNS 服务器的 IP 地址。
4、使用 nmcli 命令修改网络配置,将静态 IP 地址、子网掩码、网关和 DNS 服务器的 IP 地址分别设置为变量 $ipaddr、$netmask、$gateway 和 $dns 中指定的值。这里采用了静态 IP 地址分配方式,即将 IP 地址和子网掩码合并成一个 CIDR 地址,例如:192.168.1.181/24。
5、使用 nmcli 命令使配置生效,并将网络连接断开并重新连接以更新 IP 地址。
6、最后,输出配置结果,包括设置的静态 IP 地址、子网掩码、网关和 DNS 服务器的 IP 地址。
通过以上步骤,该脚本可以自动遍历多个节点,远程连接到每个节点,并执行静态 IP 地址配置脚本。这样就可以实现在多个节点上快速、自动地配置静态 IP 地址,提高部署效率和减少手动操作的错误。

粉丝进群方式如下图:

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

   点个在看,无需赞赏!

运维book思议
李小白,一个北漂的运维。希望能够通过本公众号与业内各位大神交流技术问题。
 最新文章