在Ubuntu系統中,批量修改多個主機的hostname可以通過編寫腳本來實現。以下是一個簡單的步驟指南,用于批量修改多個Ubuntu主機的hostname:
如果你熟悉Ansible,可以使用它來批量修改hostname。
安裝Ansible: 在控制節點上安裝Ansible。
sudo apt update
sudo apt install ansible
創建Ansible Playbook:
創建一個名為change_hostname.yml的文件,內容如下:
---
- hosts: all
become: yes
tasks:
- name: Set new hostname
hostname:
name: "{{ item }}"
loop: "{{ hostnames }}"
其中,hostnames是一個包含新主機名的列表。
運行Ansible Playbook: 在控制節點上運行以下命令,傳入新主機名列表:
ansible-playbook -i inventory_file change_hostname.yml --extra-vars "hostnames='new-hostname1 new-hostname2 new-hostname3'"
其中,inventory_file是你的主機清單文件。
如果你不想使用Ansible,可以使用SSH和腳本來批量修改hostname。
創建腳本:
創建一個名為change_hostname.sh的腳本,內容如下:
#!/bin/bash
# 新主機名列表
hostnames=("new-hostname1" "new-hostname2" "new-hostname3")
# SSH連接信息
ssh_user="your_ssh_user"
ssh_host="your_ssh_host"
# 循環修改每個主機的hostname
for hostname in "${hostnames[@]}"; do
ssh -o StrictHostKeyChecking=no "$ssh_user@$ssh_host" "sudo hostnamectl set-hostname $hostname"
done
賦予腳本執行權限:
chmod +x change_hostname.sh
運行腳本:
./change_hostname.sh
如果你熟悉Puppet,也可以使用它來批量修改hostname。
安裝Puppet: 在控制節點上安裝Puppet。
sudo apt update
sudo apt install puppet
創建Puppet Manifest:
創建一個名為change_hostname.pp的文件,內容如下:
class change_hostname {
$hostnames = ['new-hostname1', 'new-hostname2', 'new-hostname3']
host { $hostnames:
ensure => present,
name => $hostname,
}
}
node 'your_node_name' {
include change_hostname
}
應用Puppet Manifest: 在控制節點上運行以下命令:
puppet apply change_hostname.pp
通過以上方法,你可以批量修改Ubuntu主機的hostname。選擇適合你的工具和方法進行操作即可。