首页 > 系统相关 >通过shell脚本一键修改Linux主机名和IP地址脚本

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

时间:2024-09-14 16:51:15浏览次数:12  
标签:脚本 shell IP hostname 主机名 地址 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.致谢
 

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

标签:脚本,shell,IP,hostname,主机名,地址,ip
From: https://blog.csdn.net/pymzy666skr/article/details/142262048

相关文章

  • 在shell中使用github copilot
    brewinstallghghauthloginghextensioninstallgithub/gh-copilot createalias:aliascopilot='ghcopilot';echo'aliascopilot="ghcopilot"'>>~/.zshrc&&source~/.zshrcaliasgcs='ghcopilotsuggest&#......
  • 第158天:安全开发-Python-Socket编程&反弹Shell&分离免杀&端口探针&域名爆破
    前置知识使用socket模块1.导入模块首先,你需要导入Python的socket模块。importsocket2.创建套接字使用socket.socket()函数创建一个新的套接字。这个函数可以接收两个参数:地址族和套接字类型。   地址族(AddressFamily):AF_INET用于IPv4,AF_INET6用于IP......
  • 避免 PyCharm 将该 Python 脚本作为测试运行
    为了避免PyCharm将该Python脚本作为测试运行(即pytest自动捕获),你可以做以下几步来确保该脚本作为普通的Python程序执行,而不是作为pytest运行。解决方案:1.确保文件名不以test_开头:Pytest会自动检测以test_开头的文件,并尝试将其作为测试运行。如果你的文件名是test_m......
  • powershell@路径处理相关命令@路径拆分@路径解析@路径拼接@路径判断
    文章目录abstract一览表常用的路径处理场景重点路径处理命令1.Split-Path2.Convert-Path3.Join-Path4.Resolve-Path5.Test-Pathrvpavscvpa总结对比powershellprovider@powershell提供程序abstract在PowerShell中,处理路径相关的命令十分丰富,它们可以帮助我们管理、解析......
  • PowerShell的安装与升级
    在旧版本的windows上执行powershell命令时,时不时出现一些奇怪的问题,常要花不少时间去摸索解决,现记录如下。WindowsServer2012R2安装PowerShell5https://download.microsoft.com/download/6/F/5/6F5FF66C-6775-42B0-86C4-47D41F2DA187/Win8.1AndW2K12R2-KB3191564-x64.msu完成后......
  • 使用脚本部署openstack平台
    一、案例分析1.部署架构一台控制节点和一台计算节点组成简单架构OpenStack平台,控制节点安装MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服务,主要作为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。提供Dashboard界面服务。计算节点主要安装nova-comput......
  • Powershell 重新排列 Windows环境变量
    最近乱搞环境变量,然后有些重复了,遂写个脚本去重下排序下。环境变量有长度限制,如果超出了,比如SqlServer相关的,将共同路径单独搞个变量声明下,比如将其路径手动替换成如下,可大幅压缩变量长度但是,Powershell脚本在获取环境变量时又会将这些恢复成原路径,建议点击编辑文本,将其拷贝......
  • Hadoop(九)HDFS Shell操作
    Shell操作一、基本语法hadoopfs具体命令hdfsdfs具体命令二、命令大全[user@hadoop102~]$hadoopfsUsage:hadoopfs[genericoptions] [-appendToFile<localsrc>...<dst>] [-cat[-ignoreCrc]<src>...] [-checksum<src>...] [-chgrp[-R]GROUPP......
  • 强!推荐一款Python开源自动化脚本工具:AutoKey!
    1、前言在数字化时代,自动化工具成为了提升工作效率和生产力的重要手段。Python作为一种广泛使用的编程语言,以其强大的功能和易用性受到许多开发者的青睐。而今天给大家推荐一款开源的自动化脚本工具:AutoKey。结合Python的强大编程能力与AutoKey的任务自动化特性,用户可以高效地......
  • 一个linux下监听某个端口并拉起任务的shell脚本
    ​  创建监控脚本:#!/bin/bash#定义要监控的端口号PORT=8011whiletrue;do#使用netstat或ss命令检查端口是否存在if!ss-tuln|grep-q":$PORT";thenecho"$(date)端口$PORT不存在,正在尝试重启服务...">>./port_monitor.l......