web-dev-qa-db-fra.com

Comment exécuter les commandes zkCli.sh de zookeeper à partir de bash?

Est-il possible d'exécuter directement une commande zkCli.sh telle que ls / ou get / depuis bash sans entrer dans le shell de zookeeper? J'utilise la version 3.4.6-1569965 de Zookeeper.

Par exemple, quelque chose comme ceci:

$ ./zkCli.sh get /

Je ne peux le faire qu'après être connecté au zookeeper Shell, puis avoir lancé get / à partir de là, comme ci-dessous:

$ ./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 /
[]
6
rkrishnan

zkCli.sh était des commandes de processus de support après 3.4.7 . https://issues.Apache.org/jira/browse/ZOOKEEPER-1897

tel que:

./zkCli.sh -server xxxxx:2181 get /test

zkcli, un golang cli pour zookeeper, https://github.com/go-zkcli/zkcli , également une solution simple.

zkcli --servers srv-1,srv-2,srv-3 create /demo_only some_value
8
jolestar

vous pouvez utiliser bash sans entrer directement à l'intérieur. Cependant, le seul inconvénient est que vous devez vous assurer que votre commande/syntaxe zk est correcte.

Cela fonctionnerait:

#! /bin/bash
zkCli.sh -server localhost:2181 <<EOF
get /testnode
quit
EOF

Mais cela ne va pas:

#! /bin/bash
zkCli.sh -server localhost:2181 <<EOF
gt /testnode
quit
EOF
3
Michelle Tan

Je peux obtenir l'adresse HBase Master, par exemple, avec la syntaxe suivante:

zkCli.sh -server myserver get /hbase/master Si cela ne fonctionne pas, cet autre sera:

zkCli.sh -server myserver <<EOF

get /hbase/master

quit

EOF

2
Giova