用于执行一个脚本文件或较复杂的多行脚本,对比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:符合本地文件格式的绝对路径。