注:这个前提是你已经批量设置好主机名了
有些应用程序需要读取 /etc/hosts 中的本机主机映射关系,在今天遇到的一项扩容中,我这边需要先把某台服务器的 /etc/hosts
同步到需要扩容的服务器上,然后根据扩容的具体的主机和主机名修改扩容主机中的 /etc/hosts
文件。
同步的源 /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.1 GD9-TEST-004
扩容的主机有 10 台,分别为
192.168.0.2 GD9-TEST-005
192.168.0.3 GD9-TEST-007
192.168.0.4 GD9-TEST-008
192.168.0.5 GD9-TEST-009
192.168.0.6 GD9-TEST-010
......
把 /etc/hosts
同步到扩容的主机后,需要修改下各自的 /etc/hosts
,比如 192.168.0.2 需要修改成
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.2 GD9-TEST-005
一台台的修改太慢了,然后在本地修改好配置文件在传送过去太 low 了,有没有动态的方法呢。答案是有的。下面是一个脚本
#!/bin/bash
local_host=`/sbin/ifconfig bond0 |grep -a "inet addr:" |awk -F":" '{print $2}' |egrep -o '([0-9]{1,3}\.?){4}'`
host_name=`hostname`
sudo sed -i "/GD6-TEST-001/s/192.168.0.1/${local_host}/" /etc/hosts
sudo sed -i "/GD6-TEST-001/s/GD6-TEST-001/${host_name}/" /etc/hosts
然后使用 Fabric 来批量处理,即可动态的更新 /etc/hosts
了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。