#!/bin/bash

# 1. 自动识别当前主网卡名称
# 获取持有默认路由的网卡名
CURRENT_IFACE=$(ip route | grep default | awk '{print $5}' | head -n1)

# 如果没找到默认网卡，则获取第一个物理网卡
if [ -z "$CURRENT_IFACE" ]; then
    CURRENT_IFACE=$(ls /sys/class/net | grep -vE 'lo|docker|veth' | head -n1)
fi

echo "------------------------------------------------"
echo "当前检测到的网卡: $CURRENT_IFACE"

# 2. 检查是否已经是 eth0
if [ "$CURRENT_IFACE" = "eth0" ]; then
    echo "状态: 网卡已经是 eth0，无需执行修改。"
    exit 0
fi

# 3. 修改 GRUB 配置文件 (添加内核参数)
echo "步骤 1: 正在修改 /etc/default/grub ..."
# 先备份原文件
cp /etc/default/grub /etc/default/grub.bak
# 移除可能存在的旧参数并添加新参数
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 /' /etc/default/grub

# 4. 替换网络接口配置文件中的名称
if [ -f /etc/network/interfaces ]; then
    echo "步骤 2: 正在修改 /etc/network/interfaces ..."
    cp /etc/network/interfaces /etc/network/interfaces.bak
    sed -i "s/$CURRENT_IFACE/eth0/g" /etc/network/interfaces
else
    echo "错误: 未找到 /etc/network/interfaces 文件，请确认系统环境！"
    exit 1
fi

# 5. 更新 GRUB 并提醒重启
echo "步骤 3: 正在重新生成 GRUB 引导配置 ..."
grub-mkconfig -o /boot/grub/grub.cfg

echo "------------------------------------------------"
echo "✅ 修改成功完成！"
echo "备份文件已创建: /etc/default/grub.bak 和 /etc/network/interfaces.bak"
echo "请执行 'reboot' 重启系统使设置生效。"
echo "------------------------------------------------"