Cheug's Blog

当前位置:网站首页 / shell / 正文

网卡配置备份自动恢复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 -"

使用说明

  1. 保存脚本
    将脚本保存为 /usr/local/bin/configure_nic.sh 并赋予执行权限:

    chmod +x /usr/local/bin/configure_nic.sh
  2. 执行脚本
    在修改网卡配置之前运行:

    /usr/local/bin/configure_nic.sh

    此脚本会:

    • 备份当前网卡配置。

    • 创建一个还原脚本。

    • 使用 crontab 创建计划 10 分钟后执行的任务。

  3. 修改网卡配置并测试
    手动修改网卡配置文件并重启网卡:

    systemctl restart network
  4. 网络正常后取消任务
    如果确认网络配置正常,可手动移除还原任务:

    crontab -l | grep -v "/usr/local/bin/restore_nic.sh" | crontab -
  5. 定时任务到期自动恢复
    如果网络因配置错误无法连接,10 分钟后定时任务会自动还原备份的配置并重启网卡。


Powered By Cheug's Blog

Copyright Cheug Rights Reserved.