Zookeeperシェル内に行かなくても、bashからls /
またはget /
のようなzkCli.shコマンドを直接実行することはできますか? Zookeeperバージョン3.4.6-1569965を使用しています。
たとえば、次のようなもの:
$ ./zkCli.sh get /
これは、zookeeperシェルに接続し、そこからget /
を実行した後でのみ可能です。
$ ./zkCli.sh
Connecting to localhost:2181
Welcome to ZooKeeper!
WATCHER::
WatchedEvent state:AuthFailed type:None path:null
JLine support is enabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] get /
[]
zkCli.shは、3.4.7以降のサポートプロセスコマンドです。 https://issues.Apache.org/jira/browse/ZOOKEEPER-1897
といった:
./zkCli.sh -server xxxxx:2181 get /test
zkcli、zookeeper用のgolang cli https://github.com/go-zkcli/zkcli もシンプルなソリューションです。
zkcli --servers srv-1,srv-2,srv-3 create /demo_only some_value
内部に直接行かなくてもbashを使用できます。ただし、これの唯一の欠点は、zkコマンド/構文が正しいことを確認する必要があることです。
これはうまくいくでしょう:
#! /bin/bash
zkCli.sh -server localhost:2181 <<EOF
get /testnode
quit
EOF
しかし、これはしません:
#! /bin/bash
zkCli.sh -server localhost:2181 <<EOF
gt /testnode
quit
EOF
たとえば、次の構文でHBaseマスターアドレスを取得できます。
zkCli.sh -server myserver get /hbase/master
それが機能しない場合、これは次のようになります:
zkCli.sh -server myserver <<EOF
get /hbase/master
quit
EOF