本文介紹兩種在Linux系統(tǒng)中批量修改主機(jī)名的方法:使用shell腳本和ansible。
方法一:使用Shell腳本批量修改主機(jī)名
此方法適用于少量主機(jī)。
步驟1:準(zhǔn)備主機(jī)列表
創(chuàng)建一個(gè)文本文件(例如hosts.txt),每行包含一個(gè)主機(jī)名:
host1 host2 host3
步驟2:編寫Shell腳本
創(chuàng)建一個(gè)Shell腳本(例如change_hostname.sh),內(nèi)容如下:
#!/bin/bash while read -r host; do read -p "請(qǐng)輸入新的主機(jī)名 for $host: " new_hostname ssh user@$host "sudo hostnamectl set-hostname $new_hostname" done < hosts.txt
將user替換為你的用戶名。確保已配置SSH密鑰免密登錄。
步驟3:賦予腳本執(zhí)行權(quán)限
chmod +x change_hostname.sh
步驟4:運(yùn)行腳本
./change_hostname.sh
腳本將依次提示你輸入每個(gè)主機(jī)的新主機(jī)名。
方法二:使用Ansible批量修改主機(jī)名 (推薦)
Ansible更適合管理大量主機(jī)。
步驟1:安裝Ansible
在你的控制節(jié)點(diǎn)上安裝Ansible。
步驟2:編寫Ansible playbook
創(chuàng)建一個(gè)Ansible playbook文件(例如change_hostname.yml):
--- - hosts: all tasks: - name: 修改主機(jī)名 hostname: name: "{{ inventory_hostname }}"
步驟3:配置Ansible inventory
創(chuàng)建一個(gè)Ansible inventory文件(例如hosts),列出所有需要修改主機(jī)名的主機(jī):
[all] host1 host2 host3
步驟4:運(yùn)行Ansible playbook
ansible-playbook change_hostname.yml
Ansible將連接到所有指定主機(jī)并修改其主機(jī)名。
注意事項(xiàng):
- 權(quán)限: 確保你有權(quán)限通過SSH訪問所有目標(biāo)主機(jī),并且目標(biāo)主機(jī)上允許使用sudo命令。
- 網(wǎng)絡(luò)連接: 確保所有主機(jī)都能互相通信。
- 備份: 修改主機(jī)名前,建議備份相關(guān)配置文件。
- Ansible配置: 確保Ansible已正確配置,并且你的控制節(jié)點(diǎn)可以無密碼訪問所有目標(biāo)主機(jī)。
選擇哪種方法取決于你的主機(jī)數(shù)量和管理經(jīng)驗(yàn)。對(duì)于少量主機(jī),Shell腳本足夠;對(duì)于大量主機(jī),Ansible更有效率和易于管理。