Python - 基于Kazoo的 - ZooKeeper外壳
项目描述
目录
tl;dr
Apache ZooKeeper的强大且可脚本化的外壳
安装
作为Dockerfile
- ::
$ docker build . -f Dockerfile -t zk-shell:1.3.3
从PyPI
$ pip install zk-shell
或从源运行
# Kazoo is needed $ pip install kazoo $ git clone https://github.com/rgs1/zk_shell.git $ cd zk_shell $ export ZKSHELL_SRC=1; bin/zk-shell Welcome to zk-shell (0.99.04) (DISCONNECTED) />
您还可以构建一个自包含的PEX文件
$ pip install pex $ pex -v -e zk_shell.cli -o zk-shell.pex .
有关PEX的更多信息请参阅 此处.
使用
Docker版本
$ docker run -it zk-shell:1.3.3
并使用connect命令连接到您的zookeeper实例
$ zk-shell localhost:2181 (CONNECTED) /> ls zookeeper (CONNECTED) /> create foo 'bar' (CONNECTED) /> get foo bar (CONNECTED) /> cd foo (CONNECTED) /foo> create ish 'barish' (CONNECTED) /foo> cd .. (CONNECTED) /> ls foo ish (CONNECTED) /> create temp- 'temp' true true (CONNECTED) /> ls zookeeper foo temp-0000000001 (CONNECTED) /> rmr foo (CONNECTED) /> (CONNECTED) /> tree . ├── zookeeper │ ├── config │ ├── quota
支持通过readline进行行编辑和命令历史记录(如果readline可用)。还有大多数命令及其参数的自动完成功能。
可以在本地文件系统和ZooKeeper之间复制单个文件。还支持从文件系统递归复制到ZooKeeper,但反之则不行,因为znodes可以有内容和子项。
(CONNECTED) /> cp file:///etc/passwd zk://localhost:2181/passwd (CONNECTED) /> get passwd (...) unbound:x:992:991:Unbound DNS resolver:/etc/unbound:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
也支持在不同ZooKeeper集群之间复制
(CONNECTED) /> cp zk://localhost:2181/passwd zk://othercluster:2183/mypasswd
也支持在ZooKeeper集群和JSON文件之间复制
(CONNECTED) /> cp zk://localhost:2181/something json://!tmp!backup.json/ true true
也支持在集群或JSON文件之间镜像路径。镜像会将目标路径替换为源路径的内容和结构。
(CONNECTED) /> create /source/znode1/znode11 'Hello' false false true (CONNECTED) /> create /source/znode2 'Hello' false false true (CONNECTED) /> create /target/znode1/znode12 'Hello' false false true (CONNECTED) /> create /target/znode3 'Hello' false false true (CONNECTED) /> tree . ├── target │ ├── znode3 │ ├── znode1 │ │ ├── znode12 ├── source │ ├── znode2 │ ├── znode1 │ │ ├── znode11 ├── zookeeper │ ├── config │ ├── quota (CONNECTED) /> mirror /source /target Are you sure you want to replace /target with /source? [y/n]: y Mirroring took 0.04 secs (CONNECTED) /> tree . ├── target │ ├── znode2 │ ├── znode1 │ │ ├── znode11 ├── source │ ├── znode2 │ ├── znode1 │ │ ├── znode11 ├── zookeeper │ ├── config │ ├── quota (CONNECTED) /> create /target/znode4 'Hello' false false true (CONNECTED) /> mirror /source /target false false true Mirroring took 0.03 secs (CONNECTED) />
可以使用watch命令进行调试监视。它允许监视在以下情况下递归触发的所有子监视:
(CONNECTED) /> watch start / (CONNECTED) /> create /foo 'test' (CONNECTED) /> create /bar/foo 'test' (CONNECTED) /> rm /bar/foo (CONNECTED) /> watch stats / Watches Stats /foo: 1 /bar: 2 /: 1 (CONNECTED) /> watch stop /
可以通过find查找与给定文本匹配的路径或znode。
(CONNECTED) /> find / foo /foo2 /fooish/wayland /fooish/xorg /copy/foo
或使用ifind进行不区分大小写的匹配。
(CONNECTED) /> ifind / foo /foo2 /FOOish/wayland /fooish/xorg /copy/Foo
可以通过grep在znode中搜索内容。
(CONNECTED) /> grep / unbound true /passwd: unbound:x:992:991:Unbound DNS resolver:/etc/unbound:/sbin/nologin /copy/passwd: unbound:x:992:991:Unbound DNS resolver:/etc/unbound:/sbin/nologin
或使用igrep进行不区分大小写的版本。
可以使用非交互模式,通过--run-once
传递命令。
$ zk-shell --run-once "create /foo 'bar'" localhost $ zk-shell --run-once "get /foo" localhost bar
或将命令通过stdin管道传输。
$ echo "get /foo" | zk-shell --run-from-stdin localhost bar
还可以通过指定要使用的宿主机,使用SSH隧道进行连接。
$ zk-shell --tunnel ssh-host zk-host
依赖
Python 2.7、3.3、3.4、3.5或3.6
Kazoo >= 2.2
测试和开发
请参阅CONTRIBUTING.rst。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
zk_shell-1.3.4.tar.gz (58.1 kB 查看哈希值)
构建分布
zk_shell-1.3.4-py2-none-any.whl (65.0 kB 查看哈希值)