いくつかの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
ノードのリストはIPのみである必要があり(ホスト名は必要ありません)、次のようなクリーンな出力が必要です。
10.11.12.13
10.11.12.14
10.11.12.15
これを行うための最良/最も簡単な方法は何ですか?
これを行うための現在の方法を以下に示しますが、もっと良い方法がある場合は、それを見てみたいと思います。 nodetool
コマンドを使用しない場合でも。
_nodetool status
_コマンドはawk
とともに使用できます。
_nodetool status | awk '/^(U|D)(N|L|J|M)/{print $2}'
_
ノードに関する情報を含む各行は、ノードのステータスが[〜#〜] u [〜#〜] pまたは[〜#〜] d [〜 #〜] own(^(U|N)
)の後にノードの状態[〜#〜] n [〜#〜] ormal、[〜 #〜] l [〜#〜] eaving、[〜#〜] j [〜#〜] oining、または[〜#〜] m [〜#〜] oving(_(N|L|J|M)
_)。
Apache Cassandra開発者が_nodetool status
_コマンドの出力を変更しない限り、これは正常に機能するはずです。