本文介紹如何使用腳本批量修改多臺主機的計算機名,分別針對Linux和Windows系統提供解決方案。
Linux系統批量修改主機名
以下方法假設你已準備一個名為hosts_list.txt的文件,包含主機IP和對應主機名,格式如下:
192.168.1.10 host1 192.168.1.11 host2 192.168.1.12 host3
方法一:bash腳本
以下Bash腳本讀取hosts_list.txt,逐一修改主機名:
#!/bin/bash HOST_LIST="hosts_list.txt" while IFS=' ' read -r ip hostname; do echo "正在修改主機名:$hostname (IP: $ip)" echo "$hostname" | sudo tee /etc/hostname > /dev/null sudo sed -i "s/^$ip.*/$ip $hostname/g" /etc/hosts sudo systemctl restart networking echo "主機名 $hostname 修改完成" done < "$HOST_LIST"
步驟:
- 創建并編輯hosts_list.txt文件。
- 將以上腳本保存為可執行文件(例如rename_hosts.sh),并賦予執行權限:chmod +x rename_hosts.sh。
- 以root用戶身份運行腳本:sudo ./rename_hosts.sh。
對于大量主機,Ansible更有效率。 需先安裝Ansible:pip install ansible
創建Ansible Playbook文件rename_hosts.yml:
--- - name: 批量修改主機名 hosts: your_group become: yes tasks: - name: 修改 /etc/hostname replace: path: /etc/hostname regexp: '^.*$' replace: "{{ inventory_hostname }}" - name: 修改 /etc/hosts replace: path: /etc/hosts regexp: '192.168.1.{{ inventory_ip }}s+.*' replace: '{{ inventory_ip }} {{ inventory_hostname }}' - name: 重啟網絡服務 systemd: name: networking state: restarted
運行Playbook:ansible-playbook -i inventory_file rename_hosts.yml (你需要一個名為inventory_file的Ansible清單文件,定義主機組your_group)
Windows系統批量修改計算機名
假設你已準備一個名為computers.csv的csv文件,包含IP和主機名兩列:
IP,Hostname 192.168.1.10,PC1 192.168.1.11,PC2 192.168.1.12,PC3
方法一:Powershell腳本
以下PowerShell腳本讀取computers.csv,遠程修改計算機名:
$csvPath = "computers.csv" $computers = Import-Csv -Path $csvPath foreach ($computer in $computers) { $ip = $computer.IP $hostname = $computer.Hostname $session = New-PSSession -ComputerName $ip -Credential (Get-Credential) Invoke-Command -Session $session -ScriptBlock { param($newHostname) Rename-Computer -NewName $newHostname -Force Clear-DnsClientCache } -ArgumentList $hostname Remove-PSSession -Session $session Write-Host "已成功將 $ip 的計算機名更改為 $hostname" }
步驟:
- 創建并編輯computers.csv文件。
- 保存以上腳本為.ps1文件(例如rename_windows_hosts.ps1)。
- 以管理員身份運行PowerShell,并執行腳本:. ename_windows_hosts.ps1 (腳本會提示輸入目標計算機的用戶名和密碼)。
重要提示:
- 在執行任何腳本之前,務必備份相關配置文件。
- 確保擁有足夠的權限來修改主機名和網絡配置。
- 在生產環境中運行腳本前,請在測試環境中充分測試。
- 遠程修改計算機名需要目標計算機開啟遠程管理功能。
希望以上信息對您有所幫助。