我有一个将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文件第一行的内容。
答案 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