[英]Running scripts on multiple hosts concurrently with fabric
我正在尝试创建一个程序来创建多个液滴,向每个液滴发送一个脚本,并启动所有脚本的执行,而无需等待 output。 我试图在后台运行它,使用 nohup 以便在使用以下代码从终端断开连接时它不会被杀死:
for i in len(script_names):
c = Connection(host = host[i], user = user[i], connect_kwargs = {"password" : password, "key_filename" : key_filename})
c.run("nohup python3 /root/" + script_names[i] + " &")
我尝试了相同想法的其他变体,包括设置“pty=False”,使用 "> /dev/null < /dev/null &" 将 output 重定向到 dev/null ,但似乎没有任何效果。
是否可以发出多个命令以同时在不同主机上运行脚本而无需等待带有结构的 output? 或者我应该使用另一个 package 吗?
Fabric 2.x 的组还没有完全充实,所以它们不太适合这个用例。 在结构 1.x 中,我将通过使用 script_names 的字典来完成此操作,其中键是host
列表中的主机字符串,值是当前 script_names 中的名称。 然后我会让每个任务像往常一样并行执行其运行命令,在任务中使用fabric.api.env.host_string
查找值。 Fabric 2.x 的执行层还不支持这个用例 afaik。 这是我尝试破解它,但作者正确地指出,这个功能应该在执行程序中处理,我当时无法提出解决方案: https://github.com/fabric/fabric /拉/1595
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.