在 Ubuntu 中批量修改 hostname 可以通过编写脚本来实现。以下是一个简单的示例,展示了如何使用 Bash 脚本批量修改多个主机的 hostname。
首先,创建一个新的 Bash 脚本文件。你可以使用任何文本编辑器,比如 nano 或 vim。
nano batch_rename_hostnames.sh
在脚本文件中,编写以下内容:
#!/bin/bash
# 检查是否提供了新的 hostname 列表文件
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <new_hostnames_file>"
exit 1
fi
# 读取新的 hostname 列表文件
NEW_HOSTNAMES_FILE=$1
# 检查文件是否存在
if [ ! -f "$NEW_HOSTNAMES_FILE" ]; then
echo "Error: File $NEW_HOSTNAMES_FILE not found."
exit 1
fi
# 读取新的 hostname 列表并逐行处理
while IFS= read -r NEW_HOSTNAME
do
# 检查 hostname 是否为空
if [ -z "$NEW_HOSTNAME" ]; then
echo "Skipping empty hostname."
continue
fi
# 修改 hostname
sudo hostnamectl set-hostname "$NEW_HOSTNAME"
# 更新 /etc/hosts 文件
sudo sed -i "s/^127.0.0.1.*$/127.0.0.1 $NEW_HOSTNAME/" /etc/hosts
echo "Hostname changed to $NEW_HOSTNAME"
done < "$NEW_HOSTNAMES_FILE"
echo "Batch hostname change completed."
保存脚本文件并退出编辑器。如果你使用的是 nano,可以按 Ctrl+O 保存,然后按 Ctrl+X 退出。
在终端中运行以下命令,赋予脚本执行权限:
chmod +x batch_rename_hostnames.sh
创建一个新的文本文件,其中包含所有新的 hostname,每行一个。例如:
nano new_hostnames.txt
在文件中添加新的 hostname:
new-hostname-1
new-hostname-2
new-hostname-3
保存并退出编辑器。
在终端中运行脚本,并提供新的 hostname 列表文件作为参数:
sudo ./batch_rename_hostnames.sh new_hostnames.txt
sudo。/etc/hosts 文件中的 hostname,确保每个新的 hostname 都正确映射到 127.0.0.1。通过以上步骤,你可以批量修改 Ubuntu 系统中的 hostname。