非 Python API 接口支持
Func 通过非 Python API 实现远程调用,目的是为第三方工具提供调用及返回接口。Func 使用 func-transmit 命令来实现,支持 YAML 与 JSON 格式,实现了跨应用平台、语言、工具等,比如通过 Java 或 C 生成 JSON 格式的接口定义,通过 fun-transmit 命令进行调用,使用上非常简单,扩展性也非常强。
定义一个 command 模块的远程执行,分别采用 YAML 及 JSON 格式进行定义,如下:
func/run.yaml
Unresolved include directive in modules/ROOT/pages/section02/ch11/ch11-04.adoc - include::example$/第十一章/func/run.yaml[]
unc/run.json
{
"clients": "*",
"async": "False",
"nforks": 1,
"module": "command",
"method": "run",
"parameters": "/bin/echo Hello World"
}
各参数详细说明如下。
-
clients,目标主机,"*" 代表所有被控主机;
-
async,是否异步,是一个布尔值,True 为使用异步,False 则不使用;
-
nforks,启用的线程数,用数字表示;
-
module,模块名称,如 command、copyfile、process 等;
-
method,方法名称,如 command 模块下的 run 方法;
-
parameters,参数,如 "/usr/bin/tail -100/var/log/messages"。
通过 func-transmit 命令调用不同接口配置,将返回不同的格式串,如图11-7和图11-8所示。
Figure 1. 图11-7 返回标准的YAML格式
Figure 2. 图11-8 返回标准的JSON格式
返回的两种格式都可以被绝大部分语言所解析,方便后续处理。