上传文件

ambot-script 提供 upload 命令来上传文件到远程机器

upload(local: str, *remote: str, allow_error: bool = false) -> UploadResult

参数

local 本地路径

*remote 目标机器 + 目标路径

remote 为可变参数,支持传递多个以在一台机器上传多份或同时在多台机器上传

remote 的格式为 目标机器:目标路径,目标机器支持的语法与 ambot-core 相同;目标路径仅支持绝对路径

具体使用请查看示例

allow_error 允许错误(默认为 False)

默认情况下当有任何一台机器上传失败时将会终止脚本执行,可以传递这一参数以自行决定是否要退出

返回值 UploadResult

upload 的结果,为一个 Dict[str, bool]

支持 for in 或是 result['xxx'], 循环时的 key 为 host:path 字符串,value 为结果布尔值

这里的 host 是被解析后的结果,而不是传入函数参数的

示例

简单上传到某一远程机器

upload("/etc/hosts", ".sensor:/tmp/a")

传到多台机器

upload("/etc/hosts", ".master:/tmp/a", ".sensor:/tmp/b")

上传到多台机器

upload("/etc/hosts", "(.master,.sensor):/tmp/a")

允许错误

result = upload("/etc/hosts", "self:/tmp/a", "self:/tmp/not-exist-dir/a", allow_error=True)
for desc, success in result:
    if success:
        print("Upload to", desc, "success")
    else:
        print("Upload to", desc, "fail")

assert(result) # 如果任一执行失败,assert 会终止程序执行

allow_error 对 host 解析失败无效

upload("/etc/hosts", ".not-exist:/tmp/a", allow_error=True)
print("Unreachable")