网卡配置备份自动恢复shell脚本
2024-12-08 / shell / 42 次围观 / 0 次吐槽 /用于备份网卡配置文件后设置一个 10 分钟后执行的定时任务,自动恢复备份的网卡配置文件并重启网络服务
#!/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.