手把手教你用 Bash 脚本自动更新 /etc/hosts —— 自动绑定网卡 IP 与节点名

适用场景:集群部署、Kubernetes 节点配置、多机通信环境
系统要求:Linux(Ubuntu/CentOS 等主流发行版)
前置知识:基础 Shell 命令、了解/etc/hosts文件作用


🎯 背景说明

在搭建分布式系统(如 Hadoop、Kubernetes、Redis Cluster)时,我们经常需要让各节点通过主机名互相通信。而 Linux 系统默认只识别localhost,若想通过自定义名称(如node1master)访问本机或其它机器,就必须修改/etc/hosts文件。

但每次手动查 IP、编辑 hosts 文件既繁琐又容易出错。本文将带你编写一个交互式 Bash 脚本,自动完成以下任务:

  1. 列出所有可用网卡;
  2. 用户选择要使用的网卡;
  3. 自动获取该网卡的 IPv4 地址;
  4. 输入节点名称(如node1);
  5. 自动更新/etc/hosts,确保IP → 主机名映射正确。

💡 脚本功能预览

运行脚本后,你会看到类似如下交互:

>>>检测可用网卡... 可用网卡列表:0)eth01)wlan0 请选择要使用的网卡编号:0>>>选中网卡 eth0 的 IP:192.168.1.105 请输入当前节点名称(例如 node1): node1>>>192.168.1.105 node1 添加到 /etc/hosts... ✅ /etc/hosts 更新完成!当前记录:192.168.1.105 node1

如果node1已存在,则自动覆盖旧 IP,避免重复条目。


📜 完整脚本代码

将以下内容保存为setup-hosts.sh

#!/bin/bash# 手动选择网卡并更新 /etc/hostsset-e# 遇到错误立即退出# 获取所有非回环网卡(排除 lo)echo">>> 检测可用网卡..."NETWORK_INTERFACES=($(ip-olinkshow|awk-F': ''{print $2}'|grep-v lo))# 若无可用网卡,报错退出if[${#NETWORK_INTERFACES[@]}-eq0];thenecho"❌ 未检测到可用网卡!"exit1fi# 列出网卡供用户选择echo"可用网卡列表:"foriin"${!NETWORK_INTERFACES[@]}";doecho"$i)${NETWORK_INTERFACES[$i]}"done# 读取用户输入的编号read-p"请选择要使用的网卡编号: "NIC_INDEX# 校验输入是否合法if![["$NIC_INDEX"=~^[0-9]+$]]||["$NIC_INDEX"-ge${#NETWORK_INTERFACES[@]}];thenecho"❌ 输入编号无效!"exit1fiSELECTED_NIC=${NETWORK_INTERFACES[$NIC_INDEX]}# 获取选中网卡的 IPv4 地址(取第一个 inet 地址)IP_ADDR=$(ip-4 addr show"$SELECTED_NIC"|grepinet|awk'{print $2}'|cut-d/ -f1|head-n1)if[-z"$IP_ADDR"];thenecho"❌ 选中网卡$SELECTED_NIC没有 IPv4 地址!"exit1fiecho">>> 选中网卡$SELECTED_NIC的 IP:$IP_ADDR"# 输入节点名称read-p"请输入当前节点名称(例如 node1): "NODE_NAMEif[-z"$NODE_NAME"];thenecho"❌ 节点名称不能为空!"exit1fi# 更新 /etc/hostsifgrep-q"$NODE_NAME"/etc/hosts;thenecho">>> /etc/hosts 已存在$NODE_NAME,自动更新 IP..."# 使用 sed 替换整行(匹配以任意字符开头、包含 NODE_NAME 的行)sed-i"s/.*$NODE_NAME/$IP_ADDR$NODE_NAME/"/etc/hostselseecho">>> 将$IP_ADDR$NODE_NAME添加到 /etc/hosts..."echo"$IP_ADDR$NODE_NAME">>/etc/hostsfiecho"✅ /etc/hosts 更新完成!当前记录:"grep"$NODE_NAME"/etc/hosts

🔍 逐行详解

1.set -e

  • 作用:脚本中任何命令返回非 0(失败),立即退出。
  • 避免错误累积导致不可预期行为。

2. 获取网卡列表

ip-olinkshow|awk-F': ''{print $2}'|grep-v lo
  • ip -o link show:以单行格式列出所有网络接口。
  • awk -F': ' '{print $2}':以:为分隔符,提取接口名(如eth0)。
  • grep -v lo:排除回环接口lo(127.0.0.1 无实际通信意义)。

3. 用户交互选择

  • 使用数组索引让用户选择网卡,避免拼写错误。
  • 严格校验输入是否为数字且在有效范围内。

4. 获取 IPv4 地址

ip-4 addr show"$SELECTED_NIC"|grepinet|awk'{print $2}'|cut-d/ -f1|head-n1
  • ip -4:只显示 IPv4。
  • grep inet:过滤出带 IP 的行。
  • cut -d/ -f1:去掉子网掩码(如192.168.1.105/24192.168.1.105)。
  • head -n 1:只取第一个 IP(适用于多 IP 场景)。

5. 更新/etc/hosts

  • 存在则更新:用sed替换整行,防止旧 IP 残留。
    sed-i"s/.*$NODE_NAME/$IP_ADDR$NODE_NAME/"/etc/hosts

    注意:此正则会匹配任意以$NODE_NAME结尾的行,并替换为新 IP + 名称。

  • 不存在则追加:直接echo >>

⚠️ 注意事项

  1. 权限问题
    修改/etc/hosts需要 root 权限!
    运行时请使用:

    sudobashsetup-hosts.sh
  2. 主机名唯一性
    本脚本假设每个节点名称全局唯一。若多台机器使用相同NODE_NAME,会导致解析冲突!

  3. 多 IP 网卡
    脚本只取第一个 IPv4 地址。如有特殊需求(如指定公网 IP),可进一步扩展逻辑。

  4. 安全性
    sed替换时未转义特殊字符(如-.)。若NODE_NAME含正则元字符,可能出错。
    进阶建议:对$NODE_NAMEsed转义(本文为简化省略)。


✅ 验证效果

运行后,检查/etc/hosts

cat/etc/hosts|grepnode1# 应输出:192.168.1.105 node1

测试解析:

pingnode1# 应能正常 ping 通本机 IP

🧩 扩展建议

  • 支持批量配置多个节点(读取 YAML/JSON 配置文件);
  • 自动同步到集群其它节点(结合scp或 Ansible);
  • 增加 DNS 兼容模式(优先使用 DNS,fallback 到 hosts)。

📌 总结

这个小脚本虽短,却融合了:

  • 网络信息获取(ip命令)
  • 用户交互(read
  • 文本处理(grep/sed/awk
  • 系统配置管理(/etc/hosts

非常适合 DevOps 工程师、集群运维人员日常使用。一键配置,告别手敲 IP!

💡提示:将此脚本加入你的自动化部署工具箱,效率翻倍!

原创不易,转载请注明出处!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1223264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年车间洗地机厂家推荐:物业洗地机/工厂洗地机/商场超市洗地机/学校手推式洗地机/展厅手推式洗地机厂家精选

在现代制造业、仓储物流及工业厂房的日常运营中,车间地面清洁已远超简单的卫生范畴,更是保障生产安全、提升效率、展现企业形象的关键环节。传统人工拖洗不仅耗时费力,且往往难以应对油污、金属屑等工业污渍。在此背…

nodejs基于node.js和vue的游戏点单陪玩系统

目录 基于Node.js和Vue的游戏点单陪玩系统摘要系统架构设计核心功能模块技术亮点扩展性与维护应用场景 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 基于Node.js和Vue的游戏点单陪玩系统摘要 系统架构…

P5909 挂缀pendant 题解

由于发现好像随笔交出去好像更好用一些,故严肃放弃使用文章P5909 挂缀pendant 题解 是一道经典的反悔贪心题(不太理解反悔贪心可以先看文章末尾),可以学到一个证明方法,更模板的题:P4053 建筑抢修。 题意简述给定…

2026年比较好的轨道式接线端子/弹簧式接线端子热门品牌厂家推荐

在电气连接领域,轨道式接线端子和弹簧式接线端子的选择直接影响设备的安全性和可靠性。本文基于产品性能、技术创新、市场反馈及供应链稳定性四个维度,筛选出2026年值得关注的五家优质厂商。其中,慈溪柯发电子有限公…

nodejs基于农产品网上商城农商信息交流平台小程序

目录项目背景技术架构核心功能创新点应用价值项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作项目背景 农产品网上商城与农商信息交流平台小程序结合了电子商务与农业信息共享需求,旨在解决传统…

2026年评价高的双排接线端子/高效接线端子厂家选择参考建议

在电气连接领域,选择优质的双排接线端子/高效接线端子供应商需要综合考虑技术实力、生产工艺、产品稳定性及服务响应能力。经过对国内30余家专业厂商的实地考察与技术参数对比,我们建议优先关注具备垂直制造体系、拥…

2026年质量好的直线光轴/光轴厂家选购参考建议

在选购直线光轴/光轴时,质量、供货稳定性、技术实力和售后服务是核心考量因素。优质的直线光轴应具备高精度、耐磨性、抗腐蚀性以及长期使用的稳定性,而可靠的供应商则需具备成熟的生产工艺、严格的质量管控体系以及…

Linux系统用户组的管理

1、增加一个新的用户组使用groupadd命令。其格式如下: groupadd 选项 用户组 可以使用的选项有:-g GID 指定新用户组的组标识号(GID)。 -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同…

2026年,新的开始吧,股票量化交易学起来(一)

最近感觉股票的量化交易有三个阶段 1. 第一阶段:指标自动化 就是你的MACD金叉死叉,5日10日20日均线集体上抬,出现这样的指标就自动进行买入。出现空头信号就自动卖出2. 第二阶段(国外量化基金的主流手法):构建al…

2026年靠谱的42crmo圆钢/45#钢圆钢人气实力厂商推荐

在钢材加工行业,选择可靠的42crmo圆钢和45钢圆钢供应商至关重要。本文基于企业技术积淀、产品质量稳定性、供货能力、客户服务响应速度及行业口碑等核心维度,筛选出5家值得关注的厂商。其中,无锡国宾轴承有限公司凭…

基于 C# 和 Nuke 打造现代化构建系统的最佳实践

告别脚本地狱:为什么我们选择用 C# 打造现代化构建系统揭秘 HagiCode 项目如何利用 Nuke 实现类型安全、跨平台且高度可扩展的自动化构建流程,彻底解决传统构建脚本的维护痛点。背景 在软件开发的漫长旅途中,"…

工程设计类学习(DAY9):印刷电路板(PCB)材料选择、工艺特性与制造技术综合详解

摘要 印刷电路板作为现代电子产品的核心载体,其材料的选择、结构的设计以及制造工艺的精细程度直接决定了电子产品的性能、可靠性及使用寿命。本文将深入探讨 PCB 基材的本质,特别是关于 FR-4 等级的误解与正解;详细分析表面组装技术&#xf…

贾子理论及智慧公理研究:跨学科视域下AI智慧涌现的判定体系与哲学推演

贾子理论及智慧公理研究:跨学科视域下AI智慧涌现的判定体系与哲学推演摘要:本文系统梳理了由贾龙栋(Kucius Teng)提出的贾子理论及其核心衍生成果——贾子智慧公理。该理论立足东方哲学,融合现代科技,构建了…

金融服务公司如何大规模构建上下文智能

作者:来自 Elastic Karen Mcdermott 从数据访问到数据普及。 麦肯锡对数据普及的愿景标志着企业对数据思考方式的微妙但深远的转变。到 2030 年,成功不再来源于为员工提供更好的仪表板或更复杂的分析工具,而在于将智能直接嵌入系统、工作流和…

128页PPT | XX城建集团以成本为主线构建企业级项目管理系统

很多施工集团变大后,项目散在全国。成本靠 Excel 和群消息,数据慢、错、漏。领导看不到真数,付款超结、项目亏钱后才知道。公司天天救火,利润被吃掉。方案介绍这套方案把“成本”做成一条主线。项目从投标到竣工,所有花…

179页满分PPT | 某大型车企数字化工厂规划蓝图设计方案

大部分车企造新车时,工艺、计划、生产、物流、采购、质量六条线各跑各的,数据靠纸,设备靠喊,换车型要改一堆表,换物料要录一堆单,问题出了找不到根因,交付慢了找不到堵点,成本高了找…

HarmonyOS 超级终端与服务卡片创建:打造无缝多设备交互体验

HarmonyOS 超级终端与服务卡片创建:打造无缝多设备交互体验pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

【含文档+PPT+源码】基于大数据的交通流量预测系统

项目介绍 本课程演示的是一款基于大数据的交通流量预测系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项目附带的源码…

2026年比较好的企业瓶装水定制水/哇哈哈定制水供应稳定性排行

行业背景与市场趋势随着健康饮水意识的提升和企业品牌营销需求的增加,企业定制瓶装水市场在2026年迎来了新一轮增长。根据行业报告显示,中国定制水市场规模已突破200亿元,年增长率保持在15%以上。企业定制水不仅满足…

2026年比较好的深圳送水桶装水配送/景田深圳送水长期合作推荐榜

行业背景与市场趋势随着深圳城市化进程的加快和居民健康意识的提升,桶装水市场近年来呈现稳定增长态势。据深圳市统计局数据显示,2025年深圳桶装水市场规模已达15亿元,年均增长率保持在8%左右。在快节奏的都市生活中…