【问题标题】:How can I run ZooKeeper's zkCli.sh commands from Bash?如何从 Bash 运行 ZooKeeper 的 zkCli.sh 命令?
【发布时间】:2016-04-17 20:27:48
【问题描述】:

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

【问题讨论】:

  • 你试过./zkCli.sh -cmd "get /"
  • 在我的主机上哪里可以找到 zkcli?

标签: bash apache-zookeeper


【解决方案1】:

我可以获取HBase Master地址,例如,语法如下:

zkCli.sh -server myserver get /hbase/master 如果它不起作用,这个另一个将:

zkCli.sh -server myserver <<EOF
get /hbase/master
quit
EOF

【讨论】:

    【解决方案2】:

    您无需直接进入内部就可以使用 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
    

    【讨论】:

      【解决方案3】:

      zkCli.sh 从 3.4.7 版本开始支持进程命令。

      ZK Shell/Cli not processing commands

      如:

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

      zkcli,ZooKeeper 的Go 命令行界面也是一个简单的解决方案。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-26
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 2015-01-21
        相关资源
        最近更新 更多