annotate Linux_network_config.sh @ 2:fa0865bcac46 default tip

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