如何根据类似于 /etc/hosts 的文件的 IP 地址创建网络文件
How to create network file based on IP address from file similar to /etc/hosts
我有一个将 IP 地址映射到主机名的文件。它的格式类似于主机文件,包含一个 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 }'
获得了 IP 地址,通过 echo $(<hosts) | awk '{print }
获得了主机名。但这只会打印主机文件第一行的内容。
从 hosts
读取 ip 和 hostname 并将所需的输出写入 network/$ip
。
while read ip hostname; do
printf '%s\n' "NETWORKING=yes" "HOSTNAME=$hostname" "NOZEROCONF NF=yes" > network/$ip
done < hosts
我有一个将 IP 地址映射到主机名的文件。它的格式类似于主机文件,包含一个 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 }'
获得了 IP 地址,通过 echo $(<hosts) | awk '{print }
获得了主机名。但这只会打印主机文件第一行的内容。
从 hosts
读取 ip 和 hostname 并将所需的输出写入 network/$ip
。
while read ip hostname; do
printf '%s\n' "NETWORKING=yes" "HOSTNAME=$hostname" "NOZEROCONF NF=yes" > network/$ip
done < hosts