是否可以直接从bash运行zkCli.sh命令,如ls /
或get /
,而无需进入zookeeper shell?我使用的是Zookeeper版本3.4.6-1569965。
例如,像这样:
$ ./zkCli.sh get /
我只有在连接到zookeeper shell然后从那里运行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 /
[]
答案 0 :(得分:9)
zkCli.sh在3.4.7之后一直是支持进程命令。 https://issues.apache.org/jira/browse/ZOOKEEPER-1897
如:
./zkCli.sh -server xxxxx:2181 get /test
zkcli,一个动物园管理员的golang cli,https://github.com/go-zkcli/zkcli,也是一个简单的解决方案。
zkcli --servers srv-1,srv-2,srv-3 create /demo_only some_value
答案 1 :(得分:3)
你可以直接使用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
答案 2 :(得分:2)
例如,我可以使用以下语法获取HBase主地址:
zkCli.sh -server myserver get /hbase/master
如果它不起作用,另一个将:
zkCli.sh -server myserver <<EOF
get /hbase/master
quit
EOF