本文最后更新于145 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
#!/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
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
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
- 为了防止在配置网络绑定(Bonding)或其他关键网络操作时导致远程连接中断,配置 IPMI(智能平台管理接口) 是至关重要的。IPMI 允许你通过独立的带外管理(Out-of-Band)访问服务器,即使主网络不可用也能控制服务器。
# 1. 验证 IPMI 接口:
ipmitool lan print # 检查 IPMI 网络配置
# 如果未安装 ipmitool,先安装:
sudo apt install ipmitool # Debian/Ubuntu
sudo yum install ipmitool # CentOS/RHEL
# 2. 配置 IPMI 网络
# (1) 临时配置(重启失效)
# 设置 IPMI 静态 IP(示例)
sudo ipmitool lan set 1 ipsrc static
sudo ipmitool lan set 1 ipaddr 192.168.1.100
sudo ipmitool lan set 1 netmask 255.255.255.0
sudo ipmitool lan set 1 defgw ipaddr 192.168.1.1
# (2) 永久配置(写入 BMC)
# 通过 BIOS/UEFI 配置:
# 重启服务器,进入 BIOS/UEFI 设置(通常按 Del、F2 或 F12)。
# 找到 IPMI/BMC/iDRAC/iLO 设置选项。
# 设置静态 IP、子网掩码、网关,并启用 IPMI over LAN。
# 通过 ipmitool 持久化:
sudo ipmitool mc reset cold # 重启 BMC 使配置生效
# 3. 设置 IPMI 用户和密码
# 创建管理员用户(用户 ID 2,通常 1 是默认管理员)
sudo ipmitool user set name 2 admin
sudo ipmitool user set password 2 YourSecurePassword
sudo ipmitool user enable 2
# 赋予用户管理员权限
sudo ipmitool channel setaccess 1 2 callin=on ipmi=on link=on privilege=4