linux

如何批量修改Linux主机名

小樊
88
2025-02-16 00:50:22
栏目: 云计算

在Linux系统中,批量修改主机名可以通过编写脚本来实现。以下是一个简单的示例,展示了如何在多台Linux主机上批量修改主机名。

方法一:使用脚本

  1. 创建一个包含所有主机名的文件: 假设你有一个名为 hostnames.txt 的文件,其中每行包含一个主机名。

    host1
    host2
    host3
    
  2. 编写一个脚本来修改主机名: 创建一个名为 change_hostname.sh 的脚本文件,并添加以下内容:

    #!/bin/bash
    
    # 读取主机名文件
    while IFS= read -r hostname; do
        # 修改主机名
        sudo hostnamectl set-hostname "$hostname"
        
        # 更新 /etc/hosts 文件
        sudo sed -i "s/^127.0.0.1.*$/127.0.0.1 $hostname/" /etc/hosts
        
        # 重启网络服务以应用更改
        sudo systemctl restart networking
    done < hostnames.txt
    
  3. 赋予脚本执行权限

    chmod +x change_hostname.sh
    
  4. 运行脚本

    ./change_hostname.sh
    

方法二:使用Ansible

如果你有大量的主机需要修改,并且已经配置了Ansible,可以使用Ansible来批量修改主机名。

  1. 安装Ansible(如果尚未安装):

    sudo apt update
    sudo apt install ansible
    
  2. 创建一个Ansible playbook: 创建一个名为 change_hostname.yml 的文件,并添加以下内容:

    ---
    - name: Change hostnames
      hosts: all
      tasks:
        - name: Set new hostname
          hostname:
            name: "{{ inventory_hostname }}"
            state: present
    
        - name: Update /etc/hosts file
          replace:
            path: /etc/hosts
            regexp: '^127.0.0.1.*'
            replace: '127.0.0.1 {{ inventory_hostname }}'
    
  3. 运行Ansible playbook

    ansible-playbook -i inventory_file change_hostname.yml
    

    其中 inventory_file 是你的主机清单文件,例如 hosts.ini

注意事项

通过以上方法,你可以轻松地在多台Linux主机上批量修改主机名。

0
看了该问题的人还看了