1. Home
  2. Docs
  3. 使用手册
  4. 运维剧本
  5. 命令列表
  6. BigScriptCommand组件

BigScriptCommand组件

用于执行一个脚本文件或较复杂的多行脚本,对比RemoteCommand,后者只能执行一条命令,而前者可以执行多行复杂的命令包含有循环、条件语句等。
因为是异步执行,为了方便与async/await协作,故封装了同名但首字母小写的js接口,其具体源码在:https://github.com/aoyiduo/woterm/blob/main/woterm/js/async.js
其参考例子:
https://github.com/aoyiduo/woterm/blob/main/private/playbooks/test/TestBigScriptCommand.qml

截取核心代码

import BigScriptCommand 1.0

BigScriptCommand {
   id: remote
}

TextArea {
   id: cmd
   Component.onCompleted: {
       cmd.append("#!/usr/bin/env bash")
       cmd.append("df -h")
       cmd.append("ps -ef")
       cmd.append("ping -c 3 127.0.0.1")
       cmd.append("ls woterm")
       cmd.append("if [ $? -eq 0 ]; then")
       cmd.append("  echo \"yes, it is ok\"")
       cmd.append("else")
       cmd.append("  echo \"Sorry, it is bad\"")
       cmd.append("fi")
   }
}
asyncGenerator(function*(){
    Playbook.log("script start.")
    remote.hosts = hosts.text.split(',')
    yield bigScriptCommand(remote, cmd.text).catch(function(){})
    Playbook.log("script finish.")
})()

其属性列表如下:
QString script:可读可写属性,读取或设置脚本内容。

其函数列表如下:

  • bool loadFromFile(const QString& fileName);
    脚本内容从文件中加载。
    参数:
    >>fileName: 符合本地文件格式的绝对路径。
  • bool saveToFile(const QString& fileName);
    将当前执行的脚本,保存至文件。
    参数:
    >>fileName:符合本地文件格式的绝对路径。