0
点赞
收藏
分享

微信扫一扫

ubuntu20.04 链路聚合的shell脚本

丹柯yx 2023-09-08 阅读 58

链路聚合,就是将两个网口的功能合并,比如eth0和eth1两个网口,合并之后,本来只有使用eth0才能实现的功能,使用eth1后也可以,他们的网速也会变成eth0的网速+eth1的网速;

#!/bin/bash
name=/etc/netplan/01-network-manager-all.yaml
#ip_netmask=$(grep addresses $name | grep /)
#gateway4=$(grep gateway4:$name)
bond=$(cat $name | grep "bonds")
bond_status=$?
#echo $bond_status
dhcp4=$(cat $name | grep "ethernets" -A 2 | grep "dhcp")
ip_netmask=$(cat $name | grepaddress | grep /)
gateway4=$(cat $name | grep gateway4)
gat_addresses=$(cat $name | grep "nameservers" -A 1 | grep "addresses")
 
name_1=$(cat $name | grep "interfaces" -A 1 | grep "-" | cut -d "-" -f  2 | cut -d " " -f 2)
name_2=$(cat $name | grep "parameters" -B 1 | grep "-" | cut -d "-" -f  2 | cut -d " " -f 2)
echo $name_1
echo $name_2
 
if [[ $name_1 = eno1 ]] && [[ $name_2 = eno2 ]];then
	standards="true"
else
	standards="fail"
fi
 
echo $standards
if [[ "$bond_status" = "0" ]] && [[ "$#" != "0" ]];then
	echo "传入参数,使用参数的两个网卡连接"
	ethernets_location=$(cat $name | grep -n "ether" | cut -d : -f -1)
	interfaces_location=$(cat $name | grep -n "interfaces" | cut -d : -f -1)
	
	revision1=`expr $ethernets_location + 1`
	revision2=`expr $ethernets_location + 3`
	sudo sed -i ''$revision1'c    '$1':' $name
	sudo sed -i ''$revision1's/^/    /' $name
	sudo sed -i ''$revision2'c    '$2':' $name
	sudo sed -i ''$revision2's/^/    /' $name
	revision3=`expr $interfaces_location + 1`
	revision4=`expr $interfaces_location + 3`
	sudo sed -i ''$revision3'c    - '$1'' $name
	sudo sed -i ''$revision3's/^/        /' $name
	sudo sed -i ''$revision4'c    - '$2'' $name
	sudo sed -i ''$revision4's/^/        /' $name
	#sudo netplan apply
elif [[ "$bond_status" = "0" ]] && [[ "$standards" = "true" ]];then
	echo "已bond,参数是eno1/eno2,直接执行"
	#sudo netplan apply
elif [[ "$bond_status" = "0" ]] && [[ "$standards" = "true" ]];then
	echo "已bond,参数不是eno1/eno2,重新替换为eno1/eno2"
	revision1=`expr $ethernets_location + 1`
	revision2=`expr $ethernets_location + 3`
	sudo sed -i ''$revision1'c    eno1:' $name
	sudo sed -i ''$revision1's/^/    /' $name
	sudo sed -i ''$revision2'c    eno2:' $name
	sudo sed -i ''$revision2's/^/    /' $name
	revision3=`expr $interfaces_location + 1`
	revision4=`expr $interfaces_location + 2`
	sudo sed -i ''$revision3'c    - eno1' $name
	sudo sed -i ''$revision3's/^/        /' $name
	sudo sed -i ''$revision4'c    - eno2' $name
	sudo sed -i ''$revision4's/^/        /' $name
	#sudo netplan apply
else
	echo "未bond"
	sudo chmod 777 $name
	sudo sed -i '1,$d' $name
	sudo echo "# Let NetworkManager manage all $name devices on this system:">$name
	sudo sed -i '$a network:' $name
	sudo sed -i '$a version: 2' $name
	sudo sed -i '$a renderer: NetworkManager' $name
	sudo sed -i '$a ethernets:' $name
	sudo sed -i '3,$s/^/  /g' $name
	if [ $# -ne 0 ];then
		sudo sed -i '$a     '$1:'' $name
	else
		sudo sed -i '$a     eno1:' $name
	fi
	sudo sed -i '6,$s/^/    /g' $name
	sudo echo "$dhcp4">>$name
	if [ $# -ne 0 ];then
		sudo sed -i '$a     '$2:'' $name
	else
		sudo sed -i '$a     eno2:' $name
	fi
	sudo sed -i '8,$s/^/    /g' $name
	sudo echo "$dhcp4">>$name
	sudo sed -i '$a        bonds:' $name
	sudo sed -i '10,$s/^/  /g' $name
	sudo sed -i '$a        bond0:' $name
	sudo sed -i '11,$s/^/    /g' $name
	if [ $# -ne 0 ];then
		sudo echo "$ip_netmask">>$name
	else
		sudo sed -i '$a     addresses: [10.166.10.31/16]' $name
		sudo sed -i '12,$s/^/      /g' $name
	fi
	if [ $# -ne 0 ];then
		sudo echo "$gateway4">>$name
	else
		sudo sed -i '$a     gateway4: 10.166.0.1' $name
		sudo sed -i '13,$s/^/      /g' $name
	fi
	sudo sed -i '$a        nameservers:' $name
	sudo sed -i '14,$s/^/    /g' $name
	if [ $# -ne 0 ];then
		sudo echo "$gat_addresses">>$name
	else
		sudo sed -i '$a     addresses: [10.166.0.1]' $name
		sudo sed -i '15,$s/^/        /g' $name
	fi
	sudo sed -i '$a        interfaces:' $name
	sudo sed -i '16,$s/^/      /g' $name
	if [ $# -ne 0 ];then
		sudo sed -i '$a     - '$1'' $name
	else
		sudo sed -i '$a     - eno1' $name
	fi
	if [ $# -ne 0 ];then
		sudo sed -i '$a     - '$2'' $name
	else
		sudo sed -i '$a     - eno2' $name
	fi
	sudo sed -i '17,$s/^/        /g' $name
	sudo sed -i '$a        parameters:' $name
	sudo sed -i '19,$s/^/        /g' $name
	sudo sed -i '$a        mode: 802.3ad' $name
	sudo sed -i '20,$s/^/          /g' $name
	#sudo netplan apply
fi
 
 
 
 
 
 
 

举报

相关推荐

0 条评论