0
点赞
收藏
分享

微信扫一扫

Linux配置bond网卡绑定脚本


#!/bin/bash
clear
explain() {
clear
echo "${Slave_net1}网卡 and ${Slave_net2}网卡 验证成功!"
echo -e "\e[1;32m mode=0(balance-rr): 平衡抡循环策略\e[0m"
echo -e "\e[1;32m mode=1(active-backup): 主备份策略\e[0m"
echo -e "\e[1;32m mode=2(balance-xor): 平衡策略\e[0m"
echo -e "\e[1;32m mode=3(broadcast): 广播策略\e[0m"
echo -e "\e[1;32m mode=4(802.3ad): IEEE 802.3ad 动态链接聚合\e[0m"
echo -e "\e[1;32m mode=5(balance-tlb): 适配器传输负载均衡\e[0m"
echo -e "\e[1;32m mode=6(balance-alb): 适配器适应性负载均衡\e[0m"

read -p "请选择mode level:" Mode_Lv
}

for ((;;));do
read -p "请选择slav1网卡名称:" Slave_net1
if (ifconfig | awk -F: '{print $1}'| egrep ^${Slave_net1}$ &>/dev/null);then

	read -p "请选择slav2网卡名称:" Slave_net2
		if (ifconfig | awk -F: '{print $1}'| egrep ^${Slave_net2}$ &>/dev/null);then
			break
		else
			echo ${Slave_net2} 不存在
			continue
		fi
else

	 echo ${Slave_net1} 不存在
         continue
fi
done

config(){
TIME_FILE=$(date +%Y-%m-%d-%N)
read -p "请输入bondIP地址:" IPADDR_con
read -p "请输入bond子网掩码:" NETMASK_con
read -p "请输入bond网关:" GATEWAY_con

[ -f /etc/sysconfig/network-scripts/ifcfg-bond0 ]
if [ $? -eq 0 ];then
	mv  /etc/sysconfig/network-scripts/ifcfg-bond0{,.${TIME_FILE}}
fi
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << EOF
DEVICE=bond0
IPADDR=${IPADDR_con}
NETMASK=${NETMASK_con}
GATEWAY=${GATEWAY_con}
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="mode=${Mode_Lv} miimon=120"
EOF

cat >> /etc/modprobe.d/bonding.conf << EOF
alias bond0 bonding
EOF

[ -f /etc/sysconfig/network-scripts/ifcfg-${Slave_net1} ]
if [ $? -eq 0 ];then
	mv /etc/sysconfig/network-scripts/ifcfg-${Slave_net1}{,.${TIME_FILE}}
fi

cat > /etc/sysconfig/network-scripts/ifcfg-${Slave_net1} << EOF
TYPE=Ethernet
DEVICE=${Slave_net1}
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
EOF
[ -f /etc/sysconfig/network-scripts/ifcfg-${Slave_net2} ]
if [ $? -eq 0 ];then
        mv /etc/sysconfig/network-scripts/ifcfg-${Slave_net2}{,.${TIME_FILE}}
fi      

cat > /etc/sysconfig/network-scripts/ifcfg-${Slave_net2} << EOF
TYPE=Ethernet
DEVICE=${Slave_net2}
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
EOF

}

reset(){
(modprobe bonding) &>/dev/null
read -p "是否重启network?,配置失败会导致连接失败,请慎考虑[Y/N]:" RENET
if [ ${RENET} == 'y' ]|| [ ${RENET} == 'Y' ];then
	systemctl restart network
else
 	exit 5
fi
}
explain
config
reset

执行脚本:

bash bond.sh

验证:

cat /proc/net/bonding/bond0            # 查看聚合接口信息
cat /sys/class/net/bond0/bonding/mode  #查看当前聚合模式是否生效

演示执行脚本:

Linux配置bond网卡绑定脚本_linux


举报

相关推荐

0 条评论