Centos自动配置bond和网络脚本

脚本说明

该脚本适用于Centos系列安装系统后,自动配置各类BOND和单个网卡网络信息

脚本内容

#!/bin/bash
########################################################################################################
# @mail qujiayu98@163.com
# @author qujiayu
# @company_name 
########################################################################################################
# @Scpript  该脚本用于系统安装完成后自动配置服务器BOND和单个网卡的网络配置       ############################
########################################################################################################
# 网络配置文件目录
NETCONFIG="/etc/sysconfig/network-scripts"

# 获取系统目前所有网卡名称
INTERFACE=(`cat /proc/net/dev | awk 'NR>2 && $1 !~/lo/ {gsub(/:/,"");print $1}'`)

# 网络配置信息

# eg: BOND_MODE="0" | BOND_MODE="1" | BOND_MODE="2" | BOND_MODE="3" BOND_MODE="4" | BOND_MODE="5" | BOND_MODE="6" | BOND_MODE="no" 配置单个网卡
BOND_MODE="1"

# eg: DEVICE=ens33 | DEVICE=ens33,ens36 | DEVICE=ens33,ens36,ens37
DEVICE="ens33,ens36"

# eg: IP=192.168.0.10/24 | IP=192.168.0.10/25 | IP=192.168.0.10/27
IP="192.168.0.10/24"

# eg: GW=192.168.0.10 | gw=""
GW="192.168.0.2"

# eg: DNS="192.168.0.10,192.168.0.11" | DNS=""     
DNS="114.114.114.114,8.8.8.8"


function INFO(){
	echo -e "\033[32m $@ \033[0m"
}

function ERROR(){
	echo -e "\033[41;37m $@ \033[0m"
}

function USAGE(){
	 INFO "------------------------------------------------------------------------------------------------------------------------"
	 ERROR "Unknow options: $@"
	 INFO " eg: "
	 INFO "	bash bond.sh install"
	 INFO "	bash bond.sh remove"
	 INFO "------------------------------------------------------------------------------------------------------------------------"
}

function BACKUP(){
	if [ ! -d $NETCONFIG/BACKUP ]; then
		mkdir -p $NETCONFIG/BACKUP
	fi
	if [ $BOND_MODE == "no" ]; then
		TMP=(`echo $DEVICE | sed "s#,# #g"`)
		if [ ${#TMP[@]} -ne 1 ]; then
			ERROR "please input correct device num"
			exit 1
		fi
	fi
	for i in `echo $DEVICE | sed "s#,# #g"`	
	do
		mv -f $NETCONFIG/ifcfg-$i $NETCONFIG/BACKUP &>/dev/null
	done
}

function INSTALL(){
	NUM=1
	# 备份
	BACKUP
	# 判断信息是否填写
	if [[ -z $BOND_MODE || -z $DEVICE || -z $IP ]]; then
		ERROR "please edit BOND_MODE、DEVICE、IP"
	fi
	# 判断设备是否填写正确
	for i in `echo $DEVICE | sed "s#,# #g"`
	do
		if [[ ! "${INTERFACE[@]}" =~ $i ]]; then
			ERROR "please input correct device name"
		fi
	done
	# 配置配置文件
	if [[ $BOND_MODE == "0" || $BOND_MODE == "1" || $BOND_MODE == "2" || $BOND_MODE == "3" || $BOND_MODE == "4" || $BOND_MODE == "5" || $BOND_MODE == "6" ]]; then
		for i in `echo $DEVICE | sed "s#,# #g"`	
		do
			cat <<- EOF > $NETCONFIG/ifcfg-$i
			NAME=$i
			DEVICE=$i
			TYPE=Ethernet
			ONBOOT=yes
			BOOTPROTO=none
			USERCTL=no
			SLAVE=yes
			MASTER=bond0
			NM_CONTROLLED=no
			EOF
		done
		cat <<- EOF > $NETCONFIG/ifcfg-bond0
		NAME=bond0
		DEVICE=bond0
		TYPE=Bond
		BOOTPROTO=none
		ONBOOT=yes
		IPADDR=`echo $IP | awk -F'/' '{print $1}'`
		PREFIX=`echo $IP | awk -F'/' '{print $2}'`
		USERCTL=no
		BONDING_MASTER=yes
		NM_CONTROLLED=no
		EOF
		if [[ ! -z $GW ]]; then
			echo "GATEWAY=$GW" >> $NETCONFIG/ifcfg-bond0
		fi
		if [[ ! -z $DNS ]]; then
			for i in `echo $DNS | sed "s#,# #g"`
			do
				echo "DNS$NUM=$i" >> $NETCONFIG/ifcfg-bond0
				let NUM+=1
			done
		fi
		# 配置bond module
		if [ $BOND_MODE == "0" ] ; then
			echo 'BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=balance-rr"' >> $NETCONFIG/ifcfg-bond0
		elif [ $BOND_MODE == "1" ]; then
			echo 'BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=active-backup"' >> $NETCONFIG/ifcfg-bond0
		elif [ $BOND_MODE == "2" ]; then
			echo 'BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=balance-xor"' >> $NETCONFIG/ifcfg-bond0
		elif [ $BOND_MODE == "3" ]; then
			echo 'BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=broadcast"' >> $NETCONFIG/ifcfg-bond0
		elif [ $BOND_MODE == "4" ]; then
			echo 'BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=802.3ad"' >> $NETCONFIG/ifcfg-bond0
		elif [ $BOND_MODE == "5" ]; then
			echo 'BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=balance-tlb"' >> $NETCONFIG/ifcfg-bond0
		elif [ $BOND_MODE == "6" ]; then
			echo 'BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=balance-alb"' >> $NETCONFIG/ifcfg-bond0
		fi
	elif [[ $BOND_MODE == "no" ]]; then
		cat <<- EOF > $NETCONFIG/ifcfg-$DEVICE
		NAME=$DEVICE
		DEVICE=$DEVICE
		TYPE=Ethernet
		ONBOOT=yes
		BOOTPROTO=static
		IPADDR=`echo $IP | awk -F'/' '{print $1}'`
		PREFIX=`echo $IP | awk -F'/' '{print $2}'`
		NM_CONTROLLED=no
		EOF
		if [[ ! -z $GW ]]; then
			echo "GATEWAY=$GW" >> $NETCONFIG/ifcfg-$DEVICE
		fi
		if [[ ! -z $DNS ]]; then
			for i in `echo $DNS | sed "s#,# #g"`
			do
				echo "DNS$NUM=$i" >> $NETCONFIG/ifcfg-$DEVICE
				let NUM+=1
			done
		fi
	fi
	# 重启网络
	service network restart
}

function REMOVE(){
	mv -f $NETCONFIG/BACKUP/* $NETCONFIG/ &>/dev/null
	rm -rf $NETCONFIG/ifcfg-bond0 && rm -rf $NETCONFIG/BACKUP
	systemctl restart network
}

case $1 in
	"install")
		INSTALL
	;;
	"remove")
		REMOVE
	;;
	*)
		USAGE $@
	;;
esac

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺仔_牛奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值