tools -> range

操作对象描述,机器管理

tools/range 使用说明
[root@mydan tools]# ./range -?
Usage:
    list:
     Print range as a random list.
     $0 expr .. --list
    count:
     $0 expr .. --count
    count:
     $0 expr .. --show
    normalize:
     Print a range expression
     $0 expr ..
[root@mydan tools]# ./range '10.10.10.{1~3}' -l
10.10.10.2
10.10.10.1
10.10.10.3
[root@mydan tools]# echo '10.10.10.1
> 10.10.10.3'|./range
10.10.10.{1,3}
[root@mydan tools]# ./range '{==bar==*??==*}' -l
10.10.10.1
10.10.10.2
10.10.10.4
10.10.10.3
[root@mydan tools]#


参数说明:
     --list 把range表达式列出来打印在屏幕
     --count 显示条数
     --show 更加range中的机器的域名进行分类输出
     host1 host2 host3 .. 压缩成range表达式,或者可以 cat hostlist|./range


节点管理
    结点管理中把信息分成了四段,依次为:项目、属性、结点、状态。
例:   获取所有项目: range '{??==*==*==*}'
  获取所有结点: range '{==*==*??==*}'
  获取项目foo的所有机器: range '{==foo==*??==*}'
  获取项目foo和bar中状态是1的机器: range '{{foo,bar}==*==*==1}'
  获取foo项目状态不是1的机器: range '{foo==*==*!!1}'

插件
    默认有两个插件list和node
 node: range '{%%node}' 返回所有结点
 list: 使用这个插件需要cd到存放机器列表的目录中,目录中存放各个项目的节点信息,文件后缀必须为 .list。 比如foo.list bar.list ...
  文件中每一行是一个节点(比如ip),也可以是一个range表达式子(比如'10.10.10.{1~99}')。该目录下以.list为后缀的文件必须按照此规则,不然会报错。
   例: 获取所有list机器:range '{%%list}'
     获取foo.list文件中的节点: range '{%%list==foo}'
     获取foo.list和bar.list中的文件: range '{%%list=={foo,bar}}'

表达
    加法(“,”号): range node1,node2,node3
    范围(“~”号): range 'node{1~3}'
    减法(“-”号): range 'node{1~6},-node{4~6}'
    正则(“-”号):'node{1~3},host{1~3},&/node/'