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 /
[]
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
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
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