skip to navigation
skip to content

Not Logged In

zk_shell 0.97.5

A Python - Kazoo based - shell for ZooKeeper

Latest Version: 1.1.0

zk_shell
========

A Python - [Kazoo]https://github.com/python-zk/kazoo "Kazoo") based - shell for [ZooKeeper]http://zookeeper.apache.org/ "ZooKeeper").

This is a clone of the Java ZooKeeper CLI that ships with Apache ZooKeeper
that I use for similar things. But I prefer to use a Kazoo based one since
Kazoo is what the clients I deal with are using.

It supports the basic ops:

```
bin/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 support is enabled (if readline is available).

You can also copy individual files from your local filesystem to a znode
in a ZooKeeper. Recursively copying from your filesystem to ZK is supported,
but not from ZK to your local filesystem (since znodes can have content and
children).

```
(CONNECTED) /> cp /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
```

Copying from one ZK cluster to another is supported, too:

```
(CONNECTED) /> cp zk://localhost:2181/passwd zk://othercluster:2183/mypasswd
```

You can also copy from znodes to a JSON file:

```
(CONNECTED) /> cp zk://localhost:2181/something json://!tmp!backup.json/ true true
```

Mirroring one path to another path in ZK or from ZK to a JSON file or from the
filesystem or a JSON to ZK is supported. Mirroring replaces the destination path
with the content and structure of the source path.

```
(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) />
```

Sometimes you want to debug watches in ZooKeeper - i.e.: how often do watches fire
under a given path? You can easily do that with the watch command.

This allows you to continously monitor all the child watches that, recursively,
fire under <path>:

```
(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 /
```

You can also search for paths or znodes which match a given text:

```
(CONNECTED) /> find / foo
/foo2
/fooish/wayland
/fooish/xorg
/copy/foo
```
Or if you want a case-insensitive match try ifind:

```
(CONNECTED) /> ifind / foo
/foo2
/FOOish/wayland
/fooish/xorg
/copy/Foo
```

Grepping for content in znodes can also be done via grep:

```
(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
```

Or use igrep for a case-insensitive version.


You can also use zk-shell in non-interactive mode:

```
$ zk-shell localhost --run-once "create /foo 'bar'"
$ zk-shell localhost --run-once "get /foo"
bar
```  
File Type Py Version Uploaded on Size
zk_shell-0.97.5.tar.gz (md5) Source 2014-07-28 32KB
  • Downloads (All Versions):
  • 402 downloads in the last day
  • 2671 downloads in the last week
  • 16905 downloads in the last month