如何从bash运行zookeeper的zkCli.sh命令?

时间:2016-01-13 01:33:30

标签: bash apache-zookeeper

是否可以直接从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 /
[]

3 个答案:

答案 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