| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/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 "- 如遇问题,可恢复备份的配置文件"
|