共计 1669 个字符,预计需要花费 5 分钟才能阅读完成。
一。场景介绍:
一个环境下有非常多的服务器时,每台服务器的 Hostname 都不一样,有成千上百台服务器,如果通过 ssh 的方式逐一进行修改,那么对我们来说,工作量是非常巨大,且效率非常低下,况且这个主机名对于我们平时运维也是至关重要,当我们 ssh 到某一台服务器,如果没有设置主机名,那么就需要通过其他途径来得知该服务器的位置信息等等,给我们运维人员带来很大的运维烦恼。
二。准备工作
1. 所有服务器操作系统 root 账户密码需要一致,且网络互通
2.pssh 工具:可以实现批量执行命令,发送文件等等,详细可以参考《Linux 批量操作 pssh 工具》
3.ssh 密钥同步:即先生成 ssh-key,并通过 pscp 工具发送至每一台服务器 /root/.ssh 上,实现服务器之间 ssh 免密码登录,详细可以参考 http://www.linuxidc.com/Linux/2017-04/142632.htm
4. 设计好每台服务器 IP 与主机名 Hostname 对应关系 /root/host 例如:
192.168.225.128 server1
192.168.225.129 server2
192.168.225.130 server3
192.168.225.131 server4
192.168.225.132 server5
192.168.225.133 server6
192.168.225.134 server7
192.168.225.135 server8
192.168.225.136 server9
三。批量修改主机名
1.添加 hostname.sh 文件
[root@server1 ~]# vim hostname.sh
ip=`ifconfig eth0 | grep ‘inet ‘ | awk ‘{print $2}’`
hostname=`cat /root/host | grep $ip | awk ‘{print $2}’`
echo $ip
echo $hostname
hostnamectl set-hostname –static $hostname
hostname $hostname
注意:咱们是通过服务器 IP 地址来修改主机名的,上面接口一定要对应准确,命令较为简单。
2. 把生成的这两个文件(host 与 hostname.sh)通过 pscp 工具发送到所有的服务器上任意的同一目录下
pscp -h iplist /root/host /root/hostname.sh /root/ # iplist 是所有服务器 IP,如果不会使用,请看准备工作第二点。
3. 通过 pssh 工具,批量给予 hostname.sh 这个文件的可执行权限
pssh -h iplist -i ‘chmod +x /root/hostname.sh’ # iplist 是所有服务器 IP,如果不会使用,请看准备工作第二点。
4. 通过 pssh 工具,批量执行 hostname.sh 文件
pssh -h iplist -i ‘sh /root/hostname.sh’
四。其他
这种批量 修改方法比较简单,合适咱们这种不经常使用脚本的人,另外以上操作系统为 CentOS7 以上,如果您的操作系统为 centos7 以下,根据操作系统修改 hostname 的方法不同,批量修改主机名的方法都是大同小异。其他哥们如果有更好更简单方便的方法,也请指导指导,谢谢。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142728.htm