如何根据类似于/ etc / hosts的文件中的IP地址创建网络文件

时间:2015-10-01 09:15:07

标签: bash mapping hostname hosts

我有一个将IP地址映射到主机名的文件。其格式类似于hosts文件,包含主机名映射的IP地址列表。

例如

10.200.99.1    master1
10.200.99.2    master2
10.200.99.3    master3
10.200.99.4    slave1
10.200.99.5    slave2
10.200.99.6    slave3
...
...
...

我想为文件中提到的所有IP地址创建网络文件(/etc/sysconfig/network)。

网络文件的格式是基于主机文件提及主机名的位置。

NETWORKING=yes
HOSTNAME=master1
NOZEROCONF=yes

对于每个IP地址,网络文件都是在IP地址命名的目录中创建的,即network/{IPAddress}

例如,对于master1,文件的路径应为network/10.200.99.1,对于master2,路径应为network/10.200.99.2

我该怎么办?

到目前为止,我已按照echo $(<hosts) | awk '{print $1}'命令获取IP地址,并按echo $(<hosts) | awk '{print $2}获取主机名。但这只会打印hosts文件第一行的内容。

1 个答案:

答案 0 :(得分:0)

hosts读取 ip 主机名,并将所需的输出写入network/$ip

while read ip hostname; do
    printf '%s\n' "NETWORKING=yes" "HOSTNAME=$hostname" "NOZEROCONF NF=yes" > network/$ip
done < hosts