changeset 1:dad2bfc2913c

fix:Linux_network_config.sh Content not saved
author Nineveh <liny.jii@nnsui.com>
date Mon, 07 Oct 2024 09:38:13 +0800
parents 931d6c18fe53
children fa0865bcac46
files Linux_network_config.sh
diffstat 1 files changed, 102 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Linux_network_config.sh	Mon Oct 07 09:30:41 2024 +0800
+++ b/Linux_network_config.sh	Mon Oct 07 09:38:13 2024 +0800
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+# 检测系统版本
+OS_VERSION=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
+echo "当前系统版本: $OS_VERSION"
+
+# 根据系统选择对应的网络配置方式
+if [[ $OS_VERSION == *"Ubuntu"* ]]; then
+    CONFIG_DIR="/etc/netplan"
+elif [[ $OS_VERSION == *"CentOS"* ]]; then
+    CONFIG_DIR="/etc/sysconfig/network-scripts"
+else
+    echo "不支持的系统版本"
+    exit 1
+fi
+
+# 检测所有检测到的网卡,并列出显示网卡名称
+echo "检测到的网卡:"
+ip link show | grep -oP '(?<=en)\w+' | sort -u
+echo "请通过123的方式选择需要编辑的网卡: "
+read -p "网卡名称: " NIC
+
+# 询问用户是否需要配置单网卡多IP还是当前网卡只配置一个IP
+echo "1. 配置单网卡多IP"
+echo "2. 当前网卡只配置一个IP"
+read -p "请选择(1/2): " IP_MODE
+
+# 配置网络设置
+CONFIG_FILE="${CONFIG_DIR}/01-netcfg.yaml"
+echo "network:" > $CONFIG_FILE
+echo "  version: 2" >> $CONFIG_FILE
+echo "  renderer: networkd" >> $CONFIG_FILE
+echo "  ethernets:" >> $CONFIG_FILE
+echo "    $NIC:" >> $CONFIG_FILE
+echo "      dhcp4: no" >> $CONFIG_FILE
+
+if [[ $IP_MODE == "1" ]]; then
+    # 单网卡多IP配置
+    read -p "请输入第一个IP地址: " IP1
+    read -p "请输入子网掩码: " SUBNET1
+    read -p "请输入网关: " GATEWAY1
+    echo "        - $IP1/$SUBNET1" >> $CONFIG_FILE
+    echo "      gateway4: $GATEWAY1" >> $CONFIG_FILE
+    
+    while true; do
+        read -p "是否需要添加更多IP? (y/n): " ADD_MORE
+        if [[ "$ADD_MORE" == "y" || "$ADD_MORE" == "Y" ]]; then
+            read -p "请输入IP地址: " EXTRA_IP
+            read -p "请输入子网掩码: " EXTRA_SUBNET
+            read -p "请输入网关: " EXTRA_GATEWAY
+            echo "        - $EXTRA_IP/$EXTRA_SUBNET" >> $CONFIG_FILE
+            # 为额外的IP地址添加路由
+            echo "routes:" >> $CONFIG_FILE
+            echo "  - to: 0.0.0.0/0" >> $CONFIG_FILE
+            echo "    via: $EXTRA_GATEWAY" >> $CONFIG_FILE
+            echo "    on: $NIC" >> $CONFIG_FILE
+        else
+            break
+        fi
+    done
+else
+    # 单IP配置
+    read -p "请输入IP地址: " IP
+    read -p "请输入子网掩码: " SUBNET
+    read -p "请输入网关: " GATEWAY
+    echo "        - $IP/$SUBNET" >> $CONFIG_FILE
+    echo "      gateway4: $GATEWAY" >> $CONFIG_FILE
+fi
+
+read -p "请输入DNS: " DNS
+echo "      nameservers:" >> $CONFIG_FILE
+echo "        addresses: [$DNS]" >> $CONFIG_FILE
+
+# 询问是否需要配置永久静态路由
+read -p "是否需要配置永久静态路由? (1/2): " ROUTE_MODE
+
+if [[ $ROUTE_MODE == "1" ]]; then
+    read -p "请输入目的网络: " DEST_NETWORK
+    read -p "请输入子网掩码: " DEST_SUBNET
+    read -p "请输入下一跳地址: " NEXT_HOP
+    echo "配置静态路由..."
+    echo "routes:" >> $CONFIG_FILE
+    echo "  - to: $DEST_NETWORK/$DEST_SUBNET" >> $CONFIG_FILE
+    echo "    via: $NEXT_HOP" >> $CONFIG_FILE
+fi
+
+# 应用配置并验证
+if [[ $OS_VERSION == *"Ubuntu"* ]]; then
+    sudo netplan apply
+elif [[ $OS_VERSION == *"CentOS"* ]]; then
+    sudo systemctl restart network
+fi
+
+# 输出配置信息
+cat $CONFIG_FILE
+
+# 验证配置
+echo "验证配置..."
+ip addr show $NIC
+ip route show
+
+echo "配置完成!"
\ No newline at end of file