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
命令。
您可以使用该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
命令的输出,这应该可以正常工作。