Skip to content
On this page

扩展命令

实现以下命令

  • __put__ <file to upload> <path in remote host>

从solve所在的主机上传文件。__put__为关键字,使用空格分隔参数。第一个参数为本地文件的全路径,第二个参数为要保存在远端主机的路径。远端路径不存在则创建。远端文件存在则判断MD5码是否一致,一致则不再上传,不一致则重命名远端文件然后重新上传。命令之后不要存在空格。

  • __get__ <file in remote host> <local path>

从远端主机下载文件到solve所在的主机。__get__为关键字,使用空格分隔参数。第一个参数为远端主机文件的全路径,第二个参数为要保存在本地的路径。本地路径不存在则创建,本地文件已经存在则重命名然后下载。命令之后不要存在空格。

文件的上传、下载需要使用md5值对比,远端主机存在md5sum命令可以加快运行速度,不存在则使用python的代码计算且需要从远端读文件到本地因而效率不高。

  • __save__ <full filename> <file content>

可以将复杂的字符串保存到远端或本地的文件中,如字符串中包含单引号、双引号、空格、换行、$等特殊字符。无需任何转义,换行符需要通过参数引入,如session参数引入。

  • __sync__ <from ip_tag>:<from full path> <to path> <options>__sync__ <from full path> <to ip_tag>:<to path> <options>

内置文件、目录复制方法。不支持后台运行。<from ip_tag><to ip_tag>相同时只判断目录是否相同。
options

option描述支持try类型值格式默认值
try进行传输的方法顺序,上一个失败则使用下一个方法传输-1234组合1234
compress传输时是否压缩1,2,31 是 0 否
bwlimit带宽限制1,2,3数字+k/m/g
partial是否断点续传1,2,41 是 0 否
check传输结果校验,为文件则校验md5,为目录则校验大小1,2,3,41 是 0 否
progressstdout中是否显示进度1,2,31 是 0 否
proxy是否使用其他代理,none、null(不分大小写)表示为空3对应realhost的ip
batch每次从源端读取多少字节4数字524288

try类型说明

  • 1 在当前执行命令的主机运行rsync。
  • 2 在交互的另外一台主机执行命令的主机运行rsync。
  • 3 使用代理执行ssh+管道执行数据传输,默认为solve运行的主机,可以通过proxy使用其他主机作为代理。
  • 4 使用python的内置方法通过solve运行的主机代理传输。只支持文件,日志带有已经传输的数据量大小。

样例
__sync__ /a/b/c 10.0.0.1:/a/b -compress=1 -try=1234 -proxy=192.168.0.1 -bwlimit=10m -partial=1 -check=1 --progress=1 将目录或文件/a/b/c传输到10.0.0.1:/a/b下,目录或文件名保持原来的名字

  • __render__ <path to template> <path to file> -a=aaaa -b=bbb -c=ccc

将jinja模板文件中的变量进行渲染。
渲染值存在空格时使用单引号或双引号包含。
复杂的格式则需要先存储成文件,如-__d=/path_2_file,通过变量加双下划线前缀,可实现将文件的内容赋给变量d

  • __call__ <playbook line num> <options>

重新调用第几行playbook

options

option描述值格式默认值
constrict如果调用的命令不符合正则表达式,则报错正则表达式
  • 其他扩展命令

其他的扩展命令对应扩展目录extends下的文件,可用于自定义封装轻量级shell命令集合同时无需先预先上传文件(比较复杂的shell脚本建议上传后运行)。如 __abc__则类似于使用文件 __abc____abc__.sh 执行。