链路聚合,就是将两个网口的功能合并,比如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
标签:ubuntu20.04,shell,grep,name,sudo,echo,sed,location,链路
From: https://blog.51cto.com/u_64214/7409764