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

通过shell脚本一键修改Linux主机名和IP地址脚本

目录

1.前言 

2.shell脚本的具体实现以及解析 

1.1脚本功能概述

1.2脚本结构分析

3.致谢


1.前言 

在复杂的 Linux 系统管理中,高效准确地进行配置调整是至关重要的任务。当面临需要同时修改主机名和 IP 地址的情况时,手动操作不仅繁琐易错,还会耗费大量的时间和精力。

想象一下,在一个庞大的服务器集群环境中,或者在紧急的系统部署场景下,逐个手动修改主机名和 IP 地址的过程是多么令人头疼。而现在,有了一键修改 Linux 主机名和 IP 地址的脚本,这一切都将变得轻松无比。

这个脚本的出现,犹如一把神奇的钥匙,为 Linux 系统管理员打开了便捷之门。它以简洁高效的方式,将原本复杂的操作简化为一个命令的执行,极大地提高了工作效率。无论是经验丰富的专业人士,还是刚刚接触 Linux 系统管理的新手,都能从这个脚本中受益。

在接下来的文章中,我们将深入探讨这个强大脚本的具体功能、使用方法以及它为 Linux 系统管理带来的巨大变革。让我们一同走进这个充满创新与便利的 Linux 脚本世界,探索如何轻松实现主机名和 IP 地址的一键修改。

 

2.shell脚本的具体实现以及解析 
 

#!/bin/bash 
#author:xm
#desc: change ip and hostname 

# 检查参数数量是否正确
if [ $# -ne 2 ]; then
    echo "脚本使用姿势不对。"
    echo "正确姿势: $0 主机名 ip地址。"
    exit 1
fi

# 获取当前 IP 的最后一段
current_ip=`hostname -I | awk '{print $1}' | sed 's#.*\.##g'`
# 获取新 IP 的最后一段
new_ip=`echo $2 | sed 's#^.*\.##g'`
# 获取主机名参数
hostname=$1

# 修改 ens33 配置文件中的 IP
sed -i "s#10.0.0.$current_ip#10.0.0.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改 ens36 配置文件中的 IP
sed -i "s#172.16.1.$current_ip#172.16.1.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-ens36

# 重启网络服务
systemctl restart network

# 设置主机名
hostnamectl set-hostname $hostname

1.1脚本功能概述

这个脚本的主要功能是根据用户提供的主机名和 IP 地址,修改特定网络接口配置文件中的 IP 地址,并设置新的主机名,最后重启网络服务使更改生效。

1.2脚本结构分析

  1. 注释部分

    • #author:xm:标明脚本的作者。
    • #desc: change ip and hostname:描述了脚本的功能是修改 IP 地址和主机名。
  2. 参数检查

    • if [ $# -ne 2 ]; then:检查脚本传入的参数数量是否为 2 个。如果参数数量不正确,会输出错误提示信息并退出脚本。
    • echo "脚本使用姿势不对。"echo "正确姿势: $0 主机名 ip地址。":向用户展示正确的脚本使用方法。
  3. 获取当前 IP 和新 IP 的最后一段

    • current_ip=hostname -I | awk '{print $1}' | sed 's#.*.##g'`:
      • hostname -I:获取当前主机的 IP 地址。
      • awk '{print $1}':提取出 IP 地址中的第一个 IP(如果有多个 IP 的话)。
      • sed 's#.*\.##g':使用正则表达式将 IP 地址中除最后一段以外的部分删除,只保留最后一段数字。
    • new_ip=echo $2 | sed's#^.*.##g'`:对用户输入的新 IP 地址进行同样的处理,获取新 IP 的最后一段数字。
  4. 获取主机名参数

    • hostname=$1:将脚本的第一个参数赋值给变量hostname,作为新的主机名。
  5. 修改配置文件中的 IP 地址

    • sed -i "s#10.0.0.$current_ip#10.0.0.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-ens33:使用sed命令在/etc/sysconfig/network-scripts/ifcfg-ens33文件中,将旧的 IP 地址(10.0.0. 加上当前 IP 的最后一段)替换为新的 IP 地址(10.0.0. 加上新 IP 的最后一段)。
    • sed -i "s#172.16.1.$current_ip#172.16.1.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-ens36:对/etc/sysconfig/network-scripts/ifcfg-ens36文件进行同样的操作。
  6. 重启网络服务和设置主机名

    • systemctl restart network:重启网络服务,使 IP 地址的更改生效。
    • hostnamectl set-hostname $hostname:使用hostnamectl命令设置新的主机名。


 


3.致谢
 

非常感谢您阅读我的博客!如果您有任何问题、建议或想了解特定主题,请随时告诉我。您的反馈对我非常重要,我将继续努力提供高质量的内容。


http://www.kler.cn/a/312350.html

相关文章:

  • 【JavaEE进阶】导读
  • go T 泛型
  • 009_SSH_Mysql图书管理系统(学生注册 借书 还书 绵阳)——lwplus87(免费送)
  • 微服务电商平台课程三:搭建后台服务
  • 希尔排序(C语言)
  • 动态规划 —— dp 问题-买卖股票的最佳时机IV
  • Linux:Bash中的文件描述符
  • vs code 搜索 jar 中的类
  • JAVA同城生活新引擎外卖跑腿团购到店服务多合一高效系统小程序源码
  • QT打开摄像头采集
  • Unity 高亮插件Highlight Plus快速入门
  • linux下的分布式Minio部署实践
  • redis集群模式连接
  • 探索AutoIt:自动化任务的Python魔法棒!
  • Spring Boot- 数据库相关问题
  • docker部署个人网页导航
  • 影视会员充值api?接口对接需要做哪些准备工作?
  • SAP B1 流程实操 - 营销单据销售部分(下)
  • 电脑视频编辑常用软件:12个在线视频剪辑方法,这份免费攻略真实在!
  • LabVIEW机械产品几何精度质检系统
  • 金属3D打印经济效益高吗?
  • 分布式事务一致性:本地消息表设计与实践
  • Jenkins自动化部署后端项目看这篇就够了
  • ubuntu安装emqx
  • Vue(13)——router-link
  • MATLAB基本语句