zkCli.sh指令备忘
1) 创建节点
? ? 格式:create [-s] [-e] path data acl
? ? 其中"-s"表示创建一个"有序"节点,"-e"表示创建一个临时节点.默认为持久性节点
?
->create -s /test null->create /test null
? ? 如下为包括ACL的例子:?
?
?
->create -s /test null digest:test:Kk3Nr5X06NH+XdlGMyOrULgK/mo=:rwcda
? ? 创建一个path为"/test"的节点,值为"null",ACL授权方式为"digest",其中授权的用户名:密码为"test:Kk3Nr5X06NH+XdlGMyOrULgK/mo=",ACL的权限列表为"r""w""c""d""a".
? ? "digest"授权方式表示client方位此节点数据,需要指定用户名和密码,可以参考zookeeper中DigestAuthenticationProvider.generateDigest(String ipName)方法;通过向此方法指定原始的用户名和密码即可获得"digest"之后的字符串,比如传入"test:test",将会得到"test:V28q/NynI4JI3Rk54h0r8O5kMug=",其内部原理是将"密码"部分进行MD5 + sha1操作.再zkCli.sh指令上你需要传递digest之后的字符串.
? ? 其中ACL的授权方式有很多种,你可以在ZooDefs类中找到更多的信息.
? ? 最后一个参数为权限列表,r表示"read",w表示"write",c表示"create",d表示"delete",a表示"admin"
?
2) 获取节点数据
? ? 格式:get path ??
?
-> get /test-ecZxid = 0x5bctime = Mon Sep 16 14:14:06 CST 2013mZxid = 0x5bmtime = Mon Sep 16 14:14:06 CST 2013pZxid = 0x67cversion = 7dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 2numChildren = 5
? ? 你可以从结果列表中,获得所有的节点信息.
?
?
3) 查看子节点列表
? ? 指令: ls /path
4) 设置节点值
? ? 格式: set path data [version]
?
-> set /test 1313131 -1
? ? 其中值需要为字符串,版本号可以通过2)中的指令获取,如果版本号为"-1"表示更新时忽略版本校验.
?
5) 删除所有节点
? ? 格式: rmr path
?
-> rmr /test
? ? 将会删除"/test"以及其下的所有子节点.
?
6) ?设置ACL
? ? 格式: setAcl path acl
?
-> setAcl /test digest:test:Kk3Nr5X06NH+XdlGMyOrULgK/mo=:rwcda
? ? 和create指令非常相似.?
?
7) 删除节点
? ? 格式: delete path [version]
?
-> delete /test -1
? ? 需要注意的是,如果此path下还有子节点,将导致删除失败.这是和"rmr"指令的区别.
?
8) 添加授权信息
? ? 格式: addauth schema auth
?
-> addauth digest test:test
? ?只有授权之后,才能够访问那些具有ACL控制的节点数据.注意"auth"信息为原始的用户名和密码,而不是经过DigestAuthenticationProvider签名之后的. ?如果使用了错误的授权信息,可能导致"Authentication is not valid :?".
?