一。场景介绍:
一个环境下有非常多的服务器时,每台服务器的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的方法不同,批量修改主机名的方法都是大同小异。其他哥们如果有更好更简单方便的方法,也请指导指导,谢谢。