上传文件
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")