本文介紹如何使用腳本批量修改多臺(tái)主機(jī)的計(jì)算機(jī)名,分別針對(duì)Linux和Windows系統(tǒng)提供解決方案。
Linux系統(tǒng)批量修改主機(jī)名
以下方法假設(shè)你已準(zhǔn)備一個(gè)名為hosts_list.txt的文件,包含主機(jī)IP和對(duì)應(yīng)主機(jī)名,格式如下:
192.168.1.10 host1 192.168.1.11 host2 192.168.1.12 host3
方法一:bash腳本
以下Bash腳本讀取hosts_list.txt,逐一修改主機(jī)名:
#!/bin/bash HOST_LIST="hosts_list.txt" while IFS=' ' read -r ip hostname; do echo "正在修改主機(jī)名:$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 "主機(jī)名 $hostname 修改完成" done < "$HOST_LIST"
步驟:
- 創(chuàng)建并編輯hosts_list.txt文件。
- 將以上腳本保存為可執(zhí)行文件(例如rename_hosts.sh),并賦予執(zhí)行權(quán)限:chmod +x rename_hosts.sh。
- 以root用戶身份運(yùn)行腳本:sudo ./rename_hosts.sh。
對(duì)于大量主機(jī),Ansible更有效率。 需先安裝Ansible:pip install ansible
創(chuàng)建Ansible Playbook文件rename_hosts.yml:
--- - name: 批量修改主機(jī)名 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: 重啟網(wǎng)絡(luò)服務(wù) systemd: name: networking state: restarted
運(yùn)行Playbook:ansible-playbook -i inventory_file rename_hosts.yml (你需要一個(gè)名為inventory_file的Ansible清單文件,定義主機(jī)組your_group)
Windows系統(tǒng)批量修改計(jì)算機(jī)名
假設(shè)你已準(zhǔn)備一個(gè)名為computers.csv的csv文件,包含IP和主機(jī)名兩列:
IP,Hostname 192.168.1.10,PC1 192.168.1.11,PC2 192.168.1.12,PC3
方法一:Powershell腳本
以下PowerShell腳本讀取computers.csv,遠(yuǎn)程修改計(jì)算機(jī)名:
$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 的計(jì)算機(jī)名更改為 $hostname" }
步驟:
- 創(chuàng)建并編輯computers.csv文件。
- 保存以上腳本為.ps1文件(例如rename_windows_hosts.ps1)。
- 以管理員身份運(yùn)行PowerShell,并執(zhí)行腳本:. ename_windows_hosts.ps1 (腳本會(huì)提示輸入目標(biāo)計(jì)算機(jī)的用戶名和密碼)。
重要提示:
- 在執(zhí)行任何腳本之前,務(wù)必備份相關(guān)配置文件。
- 確保擁有足夠的權(quán)限來修改主機(jī)名和網(wǎng)絡(luò)配置。
- 在生產(chǎn)環(huán)境中運(yùn)行腳本前,請(qǐng)?jiān)跍y(cè)試環(huán)境中充分測(cè)試。
- 遠(yuǎn)程修改計(jì)算機(jī)名需要目標(biāo)計(jì)算機(jī)開啟遠(yuǎn)程管理功能。
希望以上信息對(duì)您有所幫助。