当前位置: 首页 > news >正文

Shell脚本切换家庭和随身wifi网络配置

文章目录

  • 脚本1:Master节点静态IP配置脚本 (192.168.31.100 / 192.168.0.100)
  • 脚本2:Node1节点静态IP配置脚本 (192.168.31.101 / 192.168.0.101)
  • 脚本3:Node2节点静态IP配置脚本 (192.168.31.102 / 192.168.0.102)

背景:之前我在家里的网络环境下搭建了一套 K8S的1个Master,2个Node节点的集群环境。后来笔记本带到在公司连上随身wifi后,k8s集群环境崩了。一看网络接口,发现ens33网卡已经没有ip了。这是家里的网络(192.168.31.x)和随身wifi的网络(192.168.0.x)的网段不一样导致的。

接下来我们就写三个脚本来切换三个主机的网络配置,

脚本1:Master节点静态IP配置脚本 (192.168.31.100 / 192.168.0.100)

/usr/local/bin/setup-master-ip.sh

#!/bin/bash# K8s Master节点静态IP配置脚本
# 使用方法: sudo ./setup-master-ip.sh [home|work]set -eecho "======================================"
echo "K8s Master节点静态IP配置脚本"
echo "======================================"# 检测网络接口
INTERFACE=$(ip link show | grep -E "ens[0-9]+|eth[0-9]+" | grep -v "lo:" | head -1 | awk -F: '{print $2}' | tr -d ' ')
if [ -z "$INTERFACE" ]; thenINTERFACE="ens33"echo "未检测到网络接口,使用默认接口: $INTERFACE"
elseecho "检测到网络接口: $INTERFACE"
fi# 获取当前IP信息
CURRENT_IP=$(ip addr show $INTERFACE | grep "inet " | awk '{print $2}' | head -1)
echo "当前IP: $CURRENT_IP"# 选择网络环境
if [ "$1" == "home" ]; thenNETWORK="home"
elif [ "$1" == "work" ]; thenNETWORK="work"
elseecho "请选择网络环境:"echo "1) 家庭网络 (192.168.31.x)"echo "2) 随身WiFi网络 (192.168.0.x)"read -p "请输入选择 [1/2]: " choicecase $choice in1) NETWORK="home" ;;2) NETWORK="work" ;;*) echo "无效选择,退出脚本"; exit 1 ;;esac
fi# 配置参数
case $NETWORK in"home")IP_ADDRESS="192.168.31.100/24"GATEWAY="192.168.31.1"NETWORK_NAME="家庭网络";;"work")IP_ADDRESS="192.168.0.100/24"GATEWAY="192.168.0.1"NETWORK_NAME="随身WiFi网络";;
esacecho "配置为: $NETWORK_NAME"
echo "IP地址: $IP_ADDRESS"
echo "网关: $GATEWAY"# 备份原有配置
BACKUP_FILE="/etc/netplan/01-netcfg.yaml.backup.$(date +%Y%m%d_%H%M%S)"
if [ -f "/etc/netplan/01-netcfg.yaml" ]; thencp /etc/netplan/01-netcfg.yaml $BACKUP_FILEecho "已备份原有配置: $BACKUP_FILE"
fi# 创建netplan配置
cat > /etc/netplan/01-netcfg.yaml << EOF
network:version: 2renderer: networkdethernets:$INTERFACE:dhcp4: noaddresses: [$IP_ADDRESS]gateway4: $GATEWAYnameservers:addresses: [223.5.5.5, 8.8.8.8, 114.114.114.114]
EOFecho "Netplan配置已生成"# 应用配置
echo "应用网络配置..."
netplan apply# 等待网络稳定
sleep 3# 验证网络配置
echo "验证网络配置..."
NEW_IP=$(ip addr show $INTERFACE | grep "inet " | awk '{print $2}' | head -1)
GATEWAY_CHECK=$(ip route | grep default | awk '{print $3}' | head -1)echo "======================================"
echo "配置完成!"
echo "网络接口: $INTERFACE"
echo "配置IP: $NEW_IP"
echo "网关: $GATEWAY_CHECK"
echo "======================================"# 测试网络连通性
echo "测试网络连通性..."
if ping -c 2 -W 1 $GATEWAY &> /dev/null; thenecho "✅ 网关连接成功"
elseecho "❌ 网关连接失败"
fiif ping -c 2 -W 1 223.5.5.5 &> /dev/null; thenecho "✅ 外网连接成功"
elseecho "❌ 外网连接失败"
fiecho "Master节点静态IP配置完成!"
echo "K8s集群节点IP:"
echo "  Master: $IP_ADDRESS"
echo "  Node1: ${IP_ADDRESS%.*}.101"
echo "  Node2: ${IP_ADDRESS%.*}.102"

脚本2:Node1节点静态IP配置脚本 (192.168.31.101 / 192.168.0.101)

vim /usr/local/bin/setup-node1-ip.sh

#!/bin/bash# K8s Node1节点静态IP配置脚本
# 使用方法: sudo ./setup-node1-ip.sh [home|work]set -eecho "======================================"
echo "K8s Node1节点静态IP配置脚本"
echo "======================================"# 检测网络接口
INTERFACE=$(ip link show | grep -E "ens[0-9]+|eth[0-9]+" | grep -v "lo:" | head -1 | awk -F: '{print $2}' | tr -d ' ')
if [ -z "$INTERFACE" ]; thenINTERFACE="ens33"echo "未检测到网络接口,使用默认接口: $INTERFACE"
elseecho "检测到网络接口: $INTERFACE"
fi# 获取当前IP信息
CURRENT_IP=$(ip addr show $INTERFACE | grep "inet " | awk '{print $2}' | head -1)
echo "当前IP: $CURRENT_IP"# 选择网络环境
if [ "$1" == "home" ]; thenNETWORK="home"
elif [ "$1" == "work" ]; thenNETWORK="work"
elseecho "请选择网络环境:"echo "1) 家庭网络 (192.168.31.x)"echo "2) 随身WiFi网络 (192.168.0.x)"read -p "请输入选择 [1/2]: " choicecase $choice in1) NETWORK="home" ;;2) NETWORK="work" ;;*) echo "无效选择,退出脚本"; exit 1 ;;esac
fi# 配置参数
case $NETWORK in"home")IP_ADDRESS="192.168.31.101/24"GATEWAY="192.168.31.1"NETWORK_NAME="家庭网络";;"work")IP_ADDRESS="192.168.0.101/24"GATEWAY="192.168.0.1"NETWORK_NAME="随身WiFi网络";;
esacecho "配置为: $NETWORK_NAME"
echo "IP地址: $IP_ADDRESS"
echo "网关: $GATEWAY"# 备份原有配置
BACKUP_FILE="/etc/netplan/01-netcfg.yaml.backup.$(date +%Y%m%d_%H%M%S)"
if [ -f "/etc/netplan/01-netcfg.yaml" ]; thencp /etc/netplan/01-netcfg.yaml $BACKUP_FILEecho "已备份原有配置: $BACKUP_FILE"
fi# 创建netplan配置
cat > /etc/netplan/01-netcfg.yaml << EOF
network:version: 2renderer: networkdethernets:$INTERFACE:dhcp4: noaddresses: [$IP_ADDRESS]gateway4: $GATEWAYnameservers:addresses: [223.5.5.5, 8.8.8.8, 114.114.114.114]
EOFecho "Netplan配置已生成"# 应用配置
echo "应用网络配置..."
netplan apply# 等待网络稳定
sleep 3# 验证网络配置
echo "验证网络配置..."
NEW_IP=$(ip addr show $INTERFACE | grep "inet " | awk '{print $2}' | head -1)
GATEWAY_CHECK=$(ip route | grep default | awk '{print $3}' | head -1)echo "======================================"
echo "配置完成!"
echo "网络接口: $INTERFACE"
echo "配置IP: $NEW_IP"
echo "网关: $GATEWAY_CHECK"
echo "======================================"# 测试网络连通性
echo "测试网络连通性..."
if ping -c 2 -W 1 $GATEWAY &> /dev/null; thenecho "✅ 网关连接成功"
elseecho "❌ 网关连接失败"
fiif ping -c 2 -W 1 223.5.5.5 &> /dev/null; thenecho "✅ 外网连接成功"
elseecho "❌ 外网连接失败"
fi# 测试与Master节点的连接
MASTER_IP="${IP_ADDRESS%.*}.100"
if ping -c 2 -W 1 $MASTER_IP &> /dev/null; thenecho "✅ Master节点连接成功 ($MASTER_IP)"
elseecho "⚠️  Master节点连接失败 ($MASTER_IP)"
fiecho "Node1节点静态IP配置完成!"
echo "K8s集群节点IP:"
echo "  Master: $MASTER_IP"
echo "  Node1: $IP_ADDRESS"
echo "  Node2: ${IP_ADDRESS%.*}.102"

脚本3:Node2节点静态IP配置脚本 (192.168.31.102 / 192.168.0.102)

vim /usr/local/bin/setup-node2-ip.sh

#!/bin/bash# K8s Node2节点静态IP配置脚本
# 使用方法: sudo ./setup-node2-ip.sh [home|work]set -eecho "======================================"
echo "K8s Node2节点静态IP配置脚本"
echo "======================================"# 检测网络接口
INTERFACE=$(ip link show | grep -E "ens[0-9]+|eth[0-9]+" | grep -v "lo:" | head -1 | awk -F: '{print $2}' | tr -d ' ')
if [ -z "$INTERFACE" ]; thenINTERFACE="ens33"echo "未检测到网络接口,使用默认接口: $INTERFACE"
elseecho "检测到网络接口: $INTERFACE"
fi# 获取当前IP信息
CURRENT_IP=$(ip addr show $INTERFACE | grep "inet " | awk '{print $2}' | head -1)
echo "当前IP: $CURRENT_IP"# 选择网络环境
if [ "$1" == "home" ]; thenNETWORK="home"
elif [ "$1" == "work" ]; thenNETWORK="work"
elseecho "请选择网络环境:"echo "1) 家庭网络 (192.168.31.x)"echo "2) 随身WiFi网络 (192.168.0.x)"read -p "请输入选择 [1/2]: " choicecase $choice in1) NETWORK="home" ;;2) NETWORK="work" ;;*) echo "无效选择,退出脚本"; exit 1 ;;esac
fi# 配置参数
case $NETWORK in"home")IP_ADDRESS="192.168.31.102/24"GATEWAY="192.168.31.1"NETWORK_NAME="家庭网络";;"work")IP_ADDRESS="192.168.0.102/24"GATEWAY="192.168.0.1"NETWORK_NAME="随身WiFi网络";;
esacecho "配置为: $NETWORK_NAME"
echo "IP地址: $IP_ADDRESS"
echo "网关: $GATEWAY"# 备份原有配置
BACKUP_FILE="/etc/netplan/01-netcfg.yaml.backup.$(date +%Y%m%d_%H%M%S)"
if [ -f "/etc/netplan/01-netcfg.yaml" ]; thencp /etc/netplan/01-netcfg.yaml $BACKUP_FILEecho "已备份原有配置: $BACKUP_FILE"
fi# 创建netplan配置
cat > /etc/netplan/01-netcfg.yaml << EOF
network:version: 2renderer: networkdethernets:$INTERFACE:dhcp4: noaddresses: [$IP_ADDRESS]gateway4: $GATEWAYnameservers:addresses: [223.5.5.5, 8.8.8.8, 114.114.114.114]
EOFecho "Netplan配置已生成"# 应用配置
echo "应用网络配置..."
netplan apply# 等待网络稳定
sleep 3# 验证网络配置
echo "验证网络配置..."
NEW_IP=$(ip addr show $INTERFACE | grep "inet " | awk '{print $2}' | head -1)
GATEWAY_CHECK=$(ip route | grep default | awk '{print $3}' | head -1)echo "======================================"
echo "配置完成!"
echo "网络接口: $INTERFACE"
echo "配置IP: $NEW_IP"
echo "网关: $GATEWAY_CHECK"
echo "======================================"# 测试网络连通性
echo "测试网络连通性..."
if ping -c 2 -W 1 $GATEWAY &> /dev/null; thenecho "✅ 网关连接成功"
elseecho "❌ 网关连接失败"
fiif ping -c 2 -W 1 223.5.5.5 &> /dev/null; thenecho "✅ 外网连接成功"
elseecho "❌ 外网连接失败"
fi# 测试与Master节点的连接
MASTER_IP="${IP_ADDRESS%.*}.100"
if ping -c 2 -W 1 $MASTER_IP &> /dev/null; thenecho "✅ Master节点连接成功 ($MASTER_IP)"
elseecho "⚠️  Master节点连接失败 ($MASTER_IP)"
fiecho "Node2节点静态IP配置完成!"
echo "K8s集群节点IP:"
echo "  Master: $MASTER_IP"
echo "  Node1: ${IP_ADDRESS%.*}.101"
echo "  Node2: $IP_ADDRESS"

给脚本添加执行权限

sudo chmod +x /usr/local/bin/setup-master-ip.sh
sudo chmod +x /usr/local/bin/setup-node1-ip.sh
sudo chmod +x /usr/local/bin/setup-node2-ip.sh

集群IP分配表
节点 家庭网络IP 随身WiFi网络IP
Master 192.168.31.100 192.168.0.100
Node1 192.168.31.101 192.168.0.101
Node2 192.168.31.102 192.168.0.102

使用方法
在对应节点上执行:

# Master节点
sudo setup-master-ip.sh# Node1节点  
sudo setup-node1-ip.sh# Node2节点
sudo setup-node2-ip.sh

或者直接指定网络:

# 配置为随身WiFi网络
sudo setup-master-ip.sh work
sudo setup-node1-ip.sh work
sudo setup-node2-ip.sh work# 配置为家庭网络
sudo setup-master-ip.sh home
sudo setup-node1-ip.sh home
sudo setup-node2-ip.sh home

这些脚本现在按照你的IP分配:Master=100, Node1=101, Node2=102,并且会自动测试节点间的网络连通性。

http://www.dtcms.com/a/519396.html

相关文章:

  • 化妆品网站建设方案项目书有区域名和主机怎么做网站
  • String[ ] 和 List<String> 的区别
  • el-table默认排序设置
  • 未来之窗昭和仙君(三十二)通用押金系统——东方仙盟筑基期
  • 【工具分享】对比 MeshCentral VNC 部署 与 Apache Guacamole VNC 部署
  • 废品回收小程序盈利密码:三方共赢模式拆解 + 避坑指南
  • ARM《2》_ARM的GNU汇编语言
  • 02_svm_多分类
  • 全面的 C#/.NET 图表构建解决方案
  • 未发表,三大创新!OCSSA-VMD-Transformer-Adaboost特征提取+编码器+集成学习轴承故障诊断
  • Linux网络HTTP(下)(9)
  • 网站权重值在较长时间内是一定的页面优化怎么做批量的网站检查
  • 从“手动填”到“自动识”:营业执照识别技术革新政务体验
  • ArkUI-X跨平台开发之环境搭建
  • 第六部分:VTK进阶(第170章 MPI 分布式渲染与数据并行)
  • 【GESP】C++四级真题 luogu-B4264 [GESP202503 四级] 二阶矩阵
  • Metasploit+Ngrok快速获取Windows Shell
  • 网站 需求文档最近中文字幕视频2019一页
  • Elasticsearch从入门到进阶——搜索引擎原理
  • 【HarmonyOS 6 特别发布】鸿蒙 6 正式登场:功能升级,构建跨设备安全流畅新生态
  • 【论文精读】AIGCBench:AI 图像生成视频(I2V)的全面评估基准
  • 电子病历语料库构建方法与架构项目全计划(2025扩展版)
  • 刷题网站开发19年做网站
  • 网站建设销售外贸企业网站功能要求
  • 设计神经网络的技巧
  • Java 核心知识点查漏补缺(二)
  • wpf之数据类型转换
  • SpringBoot-Web开发之拦截器
  • 计算机网络:网络基础
  • C++学习——类与对象详细知识点总结