wenhongquan 5 月之前
父節點
當前提交
4b98c68cd4
共有 1 個文件被更改,包括 120 次插入0 次删除
  1. 120 0
      setup_network.sh

+ 120 - 0
setup_network.sh

@@ -0,0 +1,120 @@
+#!/bin/bash
+
+#######################################################################
+# Ubuntu 系统双网卡配置脚本                                            #
+# 功能:配置一个网卡使用DHCP,另一个网卡设置静态IP 192.168.1.111      #
+# 作者:系统管理员                                                    #
+# 版本:1.0                                                           #
+# 适用系统:Ubuntu 18.04及以上(使用netplan的Ubuntu系统)             #
+#######################################################################
+
+# 错误时退出
+set -e
+
+# 设置脚本执行权限
+chmod +x "$0"
+
+echo "开始网络配置设置..."
+
+# 检查是否为root用户或有sudo权限
+if [ "$(id -u)" -ne 0 ]; then
+    echo "错误:请使用sudo或以root用户身份运行此脚本"
+    exit 1
+fi
+
+# 获取系统上的网络接口列表(排除回环接口)
+echo "检测到的网络接口:"
+interfaces=$(ip -o link show | awk -F': ' '{print $2}' | grep -v lo)
+
+# 显示所有网络接口
+for iface in $interfaces; do
+    echo "- $iface"
+done
+
+# 将接口保存到数组
+interface_array=($interfaces)
+
+# 检查是否至少有两个网络接口
+if [ ${#interface_array[@]} -lt 2 ]; then
+    echo "警告:系统上检测到的网络接口少于2个"
+    echo "请确保系统有两个可用的网络接口,然后重试"
+    exit 1
+fi
+
+# 选择前两个接口作为配置对象
+# 注意:默认使用检测到的前两个接口,如需指定特定接口,请修改以下两行
+DHCP_INTERFACE=${interface_array[0]}
+STATIC_INTERFACE=${interface_array[1]}
+
+echo ""
+echo "将配置以下接口:"
+echo "- DHCP接口: $DHCP_INTERFACE"
+echo "- 静态IP接口: $STATIC_INTERFACE (192.168.1.111/24)"
+
+# 备份现有netplan配置(使用时间戳创建唯一的备份目录)
+BACKUP_DIR="/etc/netplan/backup_$(date +%Y%m%d_%H%M%S)"
+mkdir -p $BACKUP_DIR
+cp -r /etc/netplan/* $BACKUP_DIR 2>/dev/null || true
+echo "已备份现有netplan配置到: $BACKUP_DIR"
+echo "如需恢复原始配置,可将备份目录中的文件复制回 /etc/netplan/"
+
+# 创建新的netplan配置文件
+# 文件名使用01-前缀确保优先级较高
+CONFIG_FILE="/etc/netplan/01-network-config.yaml"
+cat > $CONFIG_FILE << EOF
+# 双网卡配置:一个DHCP,一个静态IP
+# 生成时间: $(date)
+network:
+  version: 2          # netplan配置版本
+  renderer: networkd  # 使用systemd-networkd作为后端
+  ethernets:
+    # DHCP接口配置
+    $DHCP_INTERFACE:
+      dhcp4: true     # 启用IPv4 DHCP
+      dhcp6: true     # 启用IPv6 DHCP
+    # 静态IP接口配置
+    $STATIC_INTERFACE:
+      addresses: [192.168.1.111/24]  # IP地址和子网掩码
+      gateway4: 192.168.1.1          # 默认网关
+      nameservers:
+        addresses: [8.8.8.8, 8.8.4.4]  # DNS服务器(Google Public DNS)
+EOF
+
+echo ""
+echo "已创建netplan配置文件: $CONFIG_FILE"
+echo "配置内容如下:"
+cat $CONFIG_FILE
+
+echo ""
+echo "应用网络配置..."
+# 应用netplan配置
+echo "执行命令: sudo netplan apply"
+netplan apply
+
+# 验证配置是否成功应用
+echo "验证网络配置..."
+sleep 2  # 等待网络服务更新
+
+echo ""
+echo "配置已应用,显示当前网络配置:"
+ip addr show $DHCP_INTERFACE || echo "$DHCP_INTERFACE 接口可能需要重新连接"
+ip addr show $STATIC_INTERFACE || echo "$STATIC_INTERFACE 接口可能需要重新连接"
+
+echo ""
+echo "网络配置脚本执行完成!"
+echo "注意:如果网络连接未立即生效,请尝试重启网络服务或重启系统"
+echo "重启网络服务命令:sudo systemctl restart systemd-networkd"
+echo ""
+echo "==== 使用说明 ===="
+echo "1. 脚本会自动检测系统中的网络接口"
+echo "2. 第一个检测到的接口将配置为DHCP模式"
+echo "3. 第二个检测到的接口将配置为静态IP: 192.168.1.111/24,网关: 192.168.1.1"
+echo "4. 如需自定义特定接口,请编辑脚本中的 DHCP_INTERFACE 和 STATIC_INTERFACE 变量"
+echo "5. 如需修改静态IP配置,请编辑netplan配置文件中的相关参数"
+echo "6. 脚本会自动备份原始配置到带时间戳的目录中"
+echo ""
+echo "==== 安全提示 ===="
+echo "- 此脚本需要root权限才能运行"
+echo "- 更改网络配置可能导致网络连接暂时中断"
+echo "- 请在操作前确保您有其他方式访问系统(如控制台)"
+echo "- 如遇问题,可恢复备份的配置文件"