我正在使用 Fabric 2,并且尝试在多个主机上按顺序运行 shell 脚本。在脚本中,它配置一些设置并重新启动该主机。然而,当我运行我的任务时,它会在第一个主机上运行脚本后结束(我猜测是因为 SSH 连接由于重新启动而终止)。我尝试将“warn_only”设置为 True,但我不知道在 Fabric 2 上的何处设置此值。
添加:
with settings(warn_only=True):
抛出“NameError:全局名称'设置'未定义”错误。
warn_only 是否有正确的格式?如果在 Fabric 2 中还不可能,有没有办法继续运行我的任务,无论是否重新启动?
我的脚本:
from fabric import *
import time
import csv
@task
def test(ctx):
hosts = ['1.1.1.1', '2.2.2.2']
for host in hosts:
c = Connection(host=host, user="user", connect_kwargs={"password": "password"})
c.run("./shell_script.sh")
configured = False
while not configured:
result = c.run("cat /etc/hostname")
if result != "default": configured = True
time.sleep(10)
最佳答案
因此,解决方法是使用 -w 标志运行任务,这将启用 warn_only 并为我提供所需的功能。不过,如果能够在代码中设置此属性会更好。
关于python - 如何在 Fabric 2 中等待 shell 脚本重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56264563/