溫馨提示×

Ubuntu如何批量修改主機名

小樊
61
2025-05-25 22:00:11
欄目: 云計算

在Ubuntu系統中,批量修改主機名可以通過以下步驟實現:

方法一:使用腳本批量修改

  1. 創建一個腳本文件: 打開終端,使用文本編輯器(如nanovim)創建一個新的腳本文件。例如:

    nano batch_rename_hosts.sh
    
  2. 編寫腳本內容: 在腳本文件中輸入以下內容,假設你想將所有主機名修改為new-hostname-<數字>的形式:

    #!/bin/bash
    
    # 獲取當前主機名
    current_hostname=$(hostname)
    
    # 獲取主機名中的數字部分(如果有)
    number=$(echo $current_hostname | grep -o -E '[0-9]+')
    
    # 如果沒有數字部分,則默認為1
    if [ -z "$number" ]; then
        number=1
    else
        number=$((number + 1))
    fi
    
    # 新的主機名
    new_hostname="new-hostname-${number}"
    
    # 修改主機名
    sudo hostnamectl set-hostname $new_hostname
    
    # 更新/etc/hosts文件
    sudo sed -i "s/$current_hostname/$new_hostname/g" /etc/hosts
    
    echo "主機名已修改為: $new_hostname"
    
  3. 保存并退出編輯器: 按Ctrl+X,然后按Y確認保存,最后按Enter退出。

  4. 賦予腳本執行權限

    chmod +x batch_rename_hosts.sh
    
  5. 運行腳本

    sudo ./batch_rename_hosts.sh
    

方法二:使用Ansible批量修改(適用于多臺服務器)

如果你有多臺服務器需要批量修改主機名,可以使用Ansible自動化這個過程。

  1. 安裝Ansible

    sudo apt update
    sudo apt install ansible
    
  2. 創建Ansible Playbook: 創建一個新的YAML文件,例如rename_hosts.yml,并輸入以下內容:

    ---
    - hosts: all
      become: yes
      tasks:
        - name: Rename hostname
          shell: |
            current_hostname=$(hostname)
            number=$(echo $current_hostname | grep -o -E '[0-9]+')
            if [ -z "$number" ]; then
                number=1
            else
                number=$((number + 1))
            fi
            new_hostname="new-hostname-${number}"
            hostnamectl set-hostname $new_hostname
            sed -i "s/$current_hostname/$new_hostname/g" /etc/hosts
          args:
            creates: /etc/hostname
    
  3. 運行Ansible Playbook

    ansible-playbook rename_hosts.yml
    

注意事項

  • 修改主機名后,可能需要重啟網絡服務或整個系統以確保更改生效。
  • 在修改/etc/hosts文件時,確保新主機名不會與其他主機名沖突。
  • 使用Ansible時,確保目標服務器已經配置好SSH訪問權限。

通過以上方法,你可以輕松地在Ubuntu系統中批量修改主機名。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女