如何仅从hosts文件获取ip地址?猛击

myzjeezk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(454)

下面是/etc/hosts文件的示例:

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

## vagrant-hostmanager-start

<ipaddress1>   namenode
<ipaddress2> secondarynamenode
<ipaddress3>   slave1
<ipaddress4>  slave2

< it can be more slave nodes here>

## vagrant-hostmanager-end

在尝试配置hadoop群集时,我需要按以下配置拆分/etc/hosts文件:
namenode和secondarynamenode转到一个名为masters slaves的文件*转到一个名为slaves的文件至少会有namenode和0个或更多slaves。最简单的方法是什么来解析bash中提到的文件,并将部分写入到前面提到的各个部分(主部分和从部分)?我可以在python中轻松地完成它,但我需要在bash中完成它。大师们看起来像:

<ipaddress1>
<ipaddress2>

而奴隶可能是这样的:

<ipaddress3>
<ipaddress4>

就是这样,两个文件只包含ip地址,而不是机器名。。。原因是如果机器名存在,hadoop将无法工作。我怎样才能使用 awk 或者 bash ? 我有以下命令:

awk '/namenode/{print >"masters"; next} /slave[0-9]/{print > "slaves"}' /etc/hosts

但这让机器的名字保持不变。。。

jogvjijk

jogvjijk1#

这里有一种方法是 awk :

awk '
$2~/namenode/ { print $1 > "masters" } 
$2~/slave/ { print $1 > "slaves"}
' /etc/hosts

相关问题