通过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.致谢
 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值