网卡配置备份自动恢复shell脚本
2024-12-08 / shell / 142 次围观 / 0 次吐槽 /用于备份网卡配置文件后设置一个 10 分钟后执行的定时任务,自动恢复备份的网卡配置文件并重启网络服务
Bash
#!/bin/bash
# 定义网卡配置文件路径
NIC_CONFIG_FILE="/etc/sysconfig/network-scripts/ifcfg-eth0"
BACKUP_FILE="/etc/sysconfig/network-scripts/ifcfg-eth0.bak"
RESTORE_SCRIPT="/usr/local/bin/restore_nic.sh"
# 备份网卡配置文件
backup_config() {
if [ -f "$NIC_CONFIG_FILE" ]; then
cp "$NIC_CONFIG_FILE" "$BACKUP_FILE"
echo "已备份当前网卡配置到 $BACKUP_FILE"
else
echo "网卡配置文件 $NIC_CONFIG_FILE 不存在,无法备份"
exit 1
fi
}
# 创建还原脚本
create_restore_script() {
cat << EOF > "$RESTORE_SCRIPT"
#!/bin/bash
if [ -f "$BACKUP_FILE" ]; then
cp "$BACKUP_FILE" "$NIC_CONFIG_FILE"
echo "还原网卡配置文件"
systemctl restart network || systemctl restart networking
else
echo "备份文件不存在,无法还原"
fi
EOF
chmod +x "$RESTORE_SCRIPT"
echo "还原脚本已创建:$RESTORE_SCRIPT"
}
# 设置crontab任务
schedule_restore() {
local current_minute=$(date +%M)
local current_hour=$(date +%H)
# 计算10分钟后时间
local minute=$(( (10 + current_minute) % 60 ))
local hour=$(( current_hour + ( (10 + current_minute) / 60 ) ))
# 添加crontab任务
crontab -l 2>/dev/null | grep -v "$RESTORE_SCRIPT" > /tmp/crontab_tmp
echo "$minute $hour * * * $RESTORE_SCRIPT && (crontab -l | grep -v \"$RESTORE_SCRIPT\" | crontab -)" >> /tmp/crontab_tmp
crontab /tmp/crontab_tmp
rm -f /tmp/crontab_tmp
echo "已设置10分钟后自动还原任务"
}
# 主逻辑
backup_config
create_restore_script
schedule_restore
echo "备份完成,已设置10分钟后还原任务。如果网络正常,可手动移除还原任务,使用命令:"
echo "crontab -l | grep -v \"$RESTORE_SCRIPT\" | crontab -"
使用说明
保存脚本
将脚本保存为/usr/local/bin/configure_nic.sh
并赋予执行权限:chmod +x /usr/local/bin/configure_nic.sh
执行脚本
在修改网卡配置之前运行:/usr/local/bin/configure_nic.sh
此脚本会:
备份当前网卡配置。
创建一个还原脚本。
使用 crontab 创建计划 10 分钟后执行的任务。
修改网卡配置并测试
手动修改网卡配置文件并重启网卡:systemctl restart network
网络正常后取消任务
如果确认网络配置正常,可手动移除还原任务:crontab -l | grep -v "/usr/local/bin/restore_nic.sh" | crontab -
定时任务到期自动恢复
如果网络因配置错误无法连接,10 分钟后定时任务会自动还原备份的配置并重启网卡。
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.