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