环境
CentOS Linux release 7.9.2009 (Core)
脚本功能介绍
该脚本功能为 双网卡半自动化配置bond主备高可用模式
脚本内将 网卡名称 IP地址 子网掩码 网关 写成了可以输入的变量,如果有需要可以加上 DNS
使用注意事项
该脚本仅适用于 CentOS7
脚本中已经加上了开启bond模块,如果提前开启再执行脚本会导致脚本退出,已经开启了的可以把脚本里的内容注释掉
脚本内需要输入的网卡名称为 ifcfg- 后面的内容,例如:ifcfg-enp129s0f0,只需要输入enp129s0f0
此脚本配置的 bond 模式为 mode1,也就是主备高可用,有别的需要请自行修改
此脚本配置的 bond 名称为 bond0,如果你的机器有 多个bond 需要配置,那就需要修改脚本内 两张从属网卡配置文件 的 MASTER 字段,bond网卡配置文件 的 DEVICE 字段
脚本代码
#!/bin/bash
read -p "请输入第一张网卡地址:" NAME1
read -p "请输入第二张网卡地址:" NAME2
read -p "请输入IP地址:" IPADDAR
read -p "请输入子网掩码:" NETMASK
read -p "请输入网关:" GATEWAY
#备份原本的网卡配置文件
sudo cp /etc/sysconfig/network-scripts/ifcfg-$NAME1 /etc/sysconfig/network-scripts/ifcfg-$NAME1.bak
sudo cp /etc/sysconfig/network-scripts/ifcfg-$NAME2 /etc/sysconfig/network-scripts/ifcfg-$NAME2.bak
#关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
if [ $? -eq 0 ];then
echo "----- 成功关闭NetworkManager -----"
else
echo "----- NetworkManager关闭失败,脚本退出 -----"
exit 1
fi
#加载bond模块
modprobe --first-time bonding
if [ $? -eq 0 ];then
echo "----- bond模块加载成功 -----"
else
echo "----- bond模块加载失败,脚本退出 -----"
exit 1
fi
#1号网卡写入bond配置信息
echo "DEVICE=$NAME1
BOOTPROTO=none
MASTER=bond0
ONBOOT=yes
SLAVE=yes" > /etc/sysconfig/network-scripts/ifcfg-$NAME1
#2号网卡写入bond配置信息
echo "DEVICE=$NAME2
BOOTPROTO=none
MASTER=bond0
ONBOOT=yes
SLAVE=yes" > /etc/sysconfig/network-scripts/ifcfg-$NAME2
#生成bond网卡配置文件
echo 'DEVICE=bond0
TYPE=Bond
IPADDR='$IPADDAR'
NETMASK='$NETMASK'
GATEWAY='$GATEWAY'
BOOTPROTO=none
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"' > /etc/sysconfig/network-scripts/ifcfg-bond0
#重启网卡配置
systemctl restart network
if [ $? -eq 0 ];then
echo "----- 成功重启网络服务 -----"
else
echo "----- 重启网络服务失败 脚本退出 -----"
exit 1
fi
sleep 3s
#打印bond信息
cat /proc/net/bonding/bond0
总结
因为工作需要,经常要配置很多台机器的双网卡绑定bond主备模式,所以写个脚本方便自己操作
参考文章:
linux下网卡bonding配置