ubuntu

Ubuntu如何批量修改主机名

小樊
37
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
    

注意事项

通过以上方法,你可以轻松地在Ubuntu系统中批量修改主机名。

0
看了该问题的人还看了