Mercurial > collection-shell
comparison Linux_network_config.sh @ 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 |
comparison
equal
deleted
inserted
replaced
0:931d6c18fe53 | 1:dad2bfc2913c |
---|---|
1 #!/bin/bash | |
2 | |
3 # 检测系统版本 | |
4 OS_VERSION=$(awk -F= '/^NAME/{print $2}' /etc/os-release) | |
5 echo "当前系统版本: $OS_VERSION" | |
6 | |
7 # 根据系统选择对应的网络配置方式 | |
8 if [[ $OS_VERSION == *"Ubuntu"* ]]; then | |
9 CONFIG_DIR="/etc/netplan" | |
10 elif [[ $OS_VERSION == *"CentOS"* ]]; then | |
11 CONFIG_DIR="/etc/sysconfig/network-scripts" | |
12 else | |
13 echo "不支持的系统版本" | |
14 exit 1 | |
15 fi | |
16 | |
17 # 检测所有检测到的网卡,并列出显示网卡名称 | |
18 echo "检测到的网卡:" | |
19 ip link show | grep -oP '(?<=en)\w+' | sort -u | |
20 echo "请通过123的方式选择需要编辑的网卡: " | |
21 read -p "网卡名称: " NIC | |
22 | |
23 # 询问用户是否需要配置单网卡多IP还是当前网卡只配置一个IP | |
24 echo "1. 配置单网卡多IP" | |
25 echo "2. 当前网卡只配置一个IP" | |
26 read -p "请选择(1/2): " IP_MODE | |
27 | |
28 # 配置网络设置 | |
29 CONFIG_FILE="${CONFIG_DIR}/01-netcfg.yaml" | |
30 echo "network:" > $CONFIG_FILE | |
31 echo " version: 2" >> $CONFIG_FILE | |
32 echo " renderer: networkd" >> $CONFIG_FILE | |
33 echo " ethernets:" >> $CONFIG_FILE | |
34 echo " $NIC:" >> $CONFIG_FILE | |
35 echo " dhcp4: no" >> $CONFIG_FILE | |
36 | |
37 if [[ $IP_MODE == "1" ]]; then | |
38 # 单网卡多IP配置 | |
39 read -p "请输入第一个IP地址: " IP1 | |
40 read -p "请输入子网掩码: " SUBNET1 | |
41 read -p "请输入网关: " GATEWAY1 | |
42 echo " - $IP1/$SUBNET1" >> $CONFIG_FILE | |
43 echo " gateway4: $GATEWAY1" >> $CONFIG_FILE | |
44 | |
45 while true; do | |
46 read -p "是否需要添加更多IP? (y/n): " ADD_MORE | |
47 if [[ "$ADD_MORE" == "y" || "$ADD_MORE" == "Y" ]]; then | |
48 read -p "请输入IP地址: " EXTRA_IP | |
49 read -p "请输入子网掩码: " EXTRA_SUBNET | |
50 read -p "请输入网关: " EXTRA_GATEWAY | |
51 echo " - $EXTRA_IP/$EXTRA_SUBNET" >> $CONFIG_FILE | |
52 # 为额外的IP地址添加路由 | |
53 echo "routes:" >> $CONFIG_FILE | |
54 echo " - to: 0.0.0.0/0" >> $CONFIG_FILE | |
55 echo " via: $EXTRA_GATEWAY" >> $CONFIG_FILE | |
56 echo " on: $NIC" >> $CONFIG_FILE | |
57 else | |
58 break | |
59 fi | |
60 done | |
61 else | |
62 # 单IP配置 | |
63 read -p "请输入IP地址: " IP | |
64 read -p "请输入子网掩码: " SUBNET | |
65 read -p "请输入网关: " GATEWAY | |
66 echo " - $IP/$SUBNET" >> $CONFIG_FILE | |
67 echo " gateway4: $GATEWAY" >> $CONFIG_FILE | |
68 fi | |
69 | |
70 read -p "请输入DNS: " DNS | |
71 echo " nameservers:" >> $CONFIG_FILE | |
72 echo " addresses: [$DNS]" >> $CONFIG_FILE | |
73 | |
74 # 询问是否需要配置永久静态路由 | |
75 read -p "是否需要配置永久静态路由? (1/2): " ROUTE_MODE | |
76 | |
77 if [[ $ROUTE_MODE == "1" ]]; then | |
78 read -p "请输入目的网络: " DEST_NETWORK | |
79 read -p "请输入子网掩码: " DEST_SUBNET | |
80 read -p "请输入下一跳地址: " NEXT_HOP | |
81 echo "配置静态路由..." | |
82 echo "routes:" >> $CONFIG_FILE | |
83 echo " - to: $DEST_NETWORK/$DEST_SUBNET" >> $CONFIG_FILE | |
84 echo " via: $NEXT_HOP" >> $CONFIG_FILE | |
85 fi | |
86 | |
87 # 应用配置并验证 | |
88 if [[ $OS_VERSION == *"Ubuntu"* ]]; then | |
89 sudo netplan apply | |
90 elif [[ $OS_VERSION == *"CentOS"* ]]; then | |
91 sudo systemctl restart network | |
92 fi | |
93 | |
94 # 输出配置信息 | |
95 cat $CONFIG_FILE | |
96 | |
97 # 验证配置 | |
98 echo "验证配置..." | |
99 ip addr show $NIC | |
100 ip route show | |
101 | |
102 echo "配置完成!" |