非 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所示。

image 2023 12 09 14 25 16 320
Figure 1. 图11-7 返回标准的YAML格式
image 2023 12 09 14 25 39 720
Figure 2. 图11-8 返回标准的JSON格式

返回的两种格式都可以被绝大部分语言所解析,方便后续处理。