获取属于 Cassandra 集群的节点列表的最佳方法是什么?

Gen*_*ene 3 scripting cassandra nodetool

我正在为我操作的一些 Cassandra 集群创建一些脚本。其中一些脚本需要属于集群一部分的节点列表。

nodetool status将打印节点列表及其当前状态,但它打印出的信息比我需要的要多。例如:

$ nodetool status mykeyspace
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens  Owns    Host ID                               Rack
UN  10.11.12.13  47.66 KB   1       33.3%   aaa1b7c1-6049-4a08-ad3e-3697a0e30e10  rack1
UN  10.11.12.14  47.67 KB   1       33.3%   1848c369-4306-4874-afdf-5c1e95b8732e  rack1
UN  10.11.12.15  47.67 KB   1       33.3%   49578bf1-728f-438d-b1c1-d8dd644b6f7f  rack1
Run Code Online (Sandbox Code Playgroud)

节点列表应该只是 IP(不需要主机名),我想要像下面这样的干净输出:

10.11.12.13
10.11.12.14
10.11.12.15
Run Code Online (Sandbox Code Playgroud)

最好/最简单的方法是什么?

我将在下面提供我当前的方法来执行此操作,但如果有更好的方法,我很乐意看到它。即使它不使用nodetool命令。

Gen*_*ene 7

您可以使用该nodetool status命令awk

nodetool status | awk '/^(U|D)(N|L|J|M)/{print $2}'
Run Code Online (Sandbox Code Playgroud)

包含关于节点的信息的每一行要么与节点是地位开始ü p或d自己的(^(U|N)),随后节点是国家Ñ ormal,大号eaving,Ĵ oining,或中号oving( (N|L|J|M))。

只要 Apache Cassandra 开发人员不更改nodetool status命令的输出,这应该可以正常工作。