#!/bin/bash # -------------------------------------------------- # @author yangxiao # @date 2018-06-20 创徏脚本Q默认所有网卡做聚合 # @date 2018-06-21 修改脚本Q新增网卡选择Q针寚w择|卡做聚?# @date 2018-06-22 修改脚本Q新增配|网卡开启动 # -------------------------------------------------- # @update by yanghong8 # @date 2018-09-07 在原功能上就q行优化 # -------------------------------------------------- # @update by x01279 # @date 2021-07-13 调整脚本Q更适合UNV讑֤的聚合模?# -------------------------------------------------- # @update by x01279 # @date 2022-01-17 调整脚本Q兼容UNV融合设备的聚合模式 OLD_LANG=`echo $LANG` export LANG=zh_CN.utf8 echo "Ƣ迎使用|卡l定脚本" echo "该脚本需在root用户下完?开始效验用? user=`whoami` if [ "${user}" != "root" ];then echo "请在root用户下执行本脚本Q? && echo "参考命令:su - root" && exit 0 else echo "当前执行用户校验正确Q? fi net_pwd=/etc/sysconfig/network-scripts BAK=$net_pwd/bak if [ -d $BAK ] ;then rm -rf $BAK/* else mkdir $BAK fi echo "您将需要输入以下信息完成配|? echo "----------------------------------------------------" echo "1-新创建的聚合|卡l定名称Q徏议ؓbond0Q数?Q? echo "2-|卡l定模式,XOR方式聚合设ؓ2,d模式设ؓ1,静态负载均衡设?" echo "3-服务器IP地址," echo "4-服务器子|掩?" echo "5-服务器子|掩码位??55.255.255.0,与PREFIX=24表示意思相? echo "6-服务器网?" echo "7-需要绑定的实际|卡名称" echo "----------------------------------------------------" while true do read -p "1-新创建网卡绑定名U?" deviceName echo "您已l配|绑定名UCؓ: $deviceName" echo "2-请选择|卡l定模式: 0 | 1 | 2 | 3 | 4 | 5 | 6 :" read -n 1 -p "(Default: type 2): " BondType echo case $BondType in 0) echo "您已l选择l定模式? balance-rr." BondType=balance-rr break;; 1) echo "您已l选择l定模式? active-backup." BondType=active-backup break;; 2) echo "您已l选择l定模式? balance-xor." BondType=balance-xor break;; 3) echo "您已l选择l定模式? broadcast." BondType=broadcast break;; 4) echo "您已l选择l定模式? 802.3ad." BondType=802.3ad break;; 5) echo "您已l选择l定模式? balance-tlb." BondType=balance-tlb break;; 6) echo "您已l选择l定模式? balance-alb." BondType=balance-alb break;; *) echo "您已l选择l定模式? balance-xor" BondType=balance-xor break;; esac done read -p "3-服务器IP地址:" Ipaddr echo "您已l输入设备IP?: $Ipaddr" read -p "4-服务器子|掩?" Netmask echo "您已l输入设备子|掩码ؓ: $Netmask" read -p "5-服务器子|掩码位?" Prefix echo "您已l输入设备子|掩码ؓ: $Prefix" read -p "6-服务器网?" Gateway echo "您已l输入设备网关ؓ: $Gateway" if [ -f ${net_pwd}/ifcfg-$deviceName ];then mv ${net_pwd}/ifcfg-$deviceName $BAK fi touch ifcfg-$deviceName echo "DEVICE=$deviceName" >>ifcfg-$deviceName echo "NAME=$deviceName" >>ifcfg-$deviceName echo "BONDING_OPTS=\"miimon=100 updelay=0 xmit_hash_policy=1 downdelay=0 mode=$BondType\"" >>ifcfg-$deviceName echo "TYPE=Bond" >>ifcfg-$deviceName echo "BONDING_MASTER=yes" >>ifcfg-$deviceName echo "BOOTPROTO=none" >>ifcfg-$deviceName echo "USERCTL=no" >>ifcfg-$deviceName echo "NM_CONTROLLED=no" >>ifcfg-$deviceName echo "IPADDR=$Ipaddr" >>ifcfg-$deviceName echo "NETMASK=$Netmask" >>ifcfg-$deviceName echo "GATEWAY=$Gateway" >>ifcfg-$deviceName echo "DEFROUTE=yes" >>ifcfg-$deviceName echo "ONBOOT=yes" >>ifcfg-$deviceName mv ifcfg-$deviceName ${net_pwd}/ ADAPTER_NAME_ALL=`ip a|grep -E "en|em" |grep -v lo|awk -F ":" '{print $2}'|awk '{sub("^ *","");sub(" *$","");print}'` echo -e "以下是系l识别到的所有网?\n\n$ADAPTER_NAME_ALL" echo "7-误入需要绑定的|卡名称,多个|卡之间用英文空格隔开,不需要输入静静等? read -p "|卡名称:" ethname for i in `echo $ethname` do cd ${net_pwd} echo "写入以下配置信息到对应网卡中ifcfg-$i" echo "--------------------------------------------" mv ${net_pwd}/ifcfg-$i $BAK echo "DEVICE=$i" |tee -a ifcfg-$i echo "BOOTPROTO=none" |tee -a ifcfg-$i echo "MASTER=$deviceName" |tee -a ifcfg-$i echo "SLAVE=yes" |tee -a ifcfg-$i echo "NM_CONTROLLED=no" |tee -a ifcfg-$i echo "USERCTL=no" |tee -a ifcfg-$i echo "ONBOOT=yes" |tee -a ifcfg-$i echo "--------------------------------------------" done function check_nm() { systemctl status NetworkManager 2>&1 >/dev/null if [ $? = 0 ];then systemctl stop NetworkManager systemctl disable NetworkManager 2>&1 >/dev/null fi } check_nm systemctl restart network export LANG=$OLD_LANG