通过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脚本结构分析
-
注释部分
#author:xm
:标明脚本的作者。#desc: change ip and hostname
:描述了脚本的功能是修改 IP 地址和主机名。
-
参数检查
if [ $# -ne 2 ]; then
:检查脚本传入的参数数量是否为 2 个。如果参数数量不正确,会输出错误提示信息并退出脚本。echo "脚本使用姿势不对。"
和echo "正确姿势: $0 主机名 ip地址。"
:向用户展示正确的脚本使用方法。
-
获取当前 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 的最后一段数字。
-
获取主机名参数
hostname=$1
:将脚本的第一个参数赋值给变量hostname
,作为新的主机名。
-
修改配置文件中的 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
文件进行同样的操作。
-
重启网络服务和设置主机名
systemctl restart network
:重启网络服务,使 IP 地址的更改生效。hostnamectl set-hostname $hostname
:使用hostnamectl
命令设置新的主机名。
3.致谢
非常感谢您阅读我的博客!如果您有任何问题、建议或想了解特定主题,请随时告诉我。您的反馈对我非常重要,我将继续努力提供高质量的内容。