插件窝 干货文章 如何使用脚本自动修改Linux主机名

如何使用脚本自动修改Linux主机名

HOSTNAME 主机 NEW 修改 1002    来源:    2025-05-06

使用脚本自动修改Linux主机名

在Linux系统中,可以通过脚本自动修改主机名。以下是几种常用的方法:

方法一:使用hostnamectl命令(推荐用于现代Linux系统)

#!/bin/bash

# 定义新主机名
NEW_HOSTNAME="new-hostname"

# 使用hostnamectl设置主机名
sudo hostnamectl set-hostname "$NEW_HOSTNAME"

# 更新/etc/hosts文件
sudo sed -i "s/^127.0.1.1.*/127.0.1.1\t$NEW_HOSTNAME/g" /etc/hosts

echo "主机名已修改为: $NEW_HOSTNAME"

方法二:直接修改相关文件(兼容旧系统)

#!/bin/bash

# 定义新主机名
NEW_HOSTNAME="new-hostname"

# 修改/etc/hostname文件
echo "$NEW_HOSTNAME" | sudo tee /etc/hostname > /dev/null

# 修改/etc/hosts文件
sudo sed -i "s/^127.0.1.1.*/127.0.1.1\t$NEW_HOSTNAME/g" /etc/hosts

# 立即生效(不需要重启)
sudo hostname "$NEW_HOSTNAME"

echo "主机名已修改为: $NEW_HOSTNAME"

方法三:适用于不同发行版的通用脚本

#!/bin/bash

NEW_HOSTNAME="new-hostname"

# 检测系统类型并采取相应操作
if [ -f /etc/os-release ]; then
    # 现代Linux系统
    sudo hostnamectl set-hostname "$NEW_HOSTNAME"
elif [ -f /etc/redhat-release ]; then
    # RedHat/CentOS 6及以下
    echo "$NEW_HOSTNAME" > /etc/hostname
    sudo sysctl kernel.hostname="$NEW_HOSTNAME"
else
    # 其他Unix-like系统
    echo "$NEW_HOSTNAME" > /etc/hostname
    sudo hostname "$NEW_HOSTNAME"
fi

# 更新/etc/hosts文件
sudo sed -i "s/^127.0.1.1.*/127.0.1.1\t$NEW_HOSTNAME/g" /etc/hosts

echo "主机名已修改为: $NEW_HOSTNAME"

使用方法

  1. 将上述任一脚本保存为change_hostname.sh
  2. 给脚本执行权限:chmod +x change_hostname.sh
  3. 使用root权限执行:sudo ./change_hostname.sh

注意事项

  1. 修改主机名需要root权限
  2. 某些服务可能需要重启才能识别新的主机名
  3. 在集群环境中修改主机名要格外小心
  4. 主机名通常只包含小写字母、数字和连字符,避免使用特殊字符

验证修改

修改完成后,可以使用以下命令验证:

hostname
hostnamectl
cat /etc/hostname

这些命令都应该显示新的主机名。