fabric 在两个单独的服务器上 运行 两个单独的命令的正确方法是什么?

What is the proper way for fabric to run two separate commands on two separate servers?

假设我有两个带有关联参数的命令:

我想 运行 ServerA 上的第一个命令和 ServerB

上的第二个命令

通过更改 env 在 fabric 中执行此操作的正确方法吗?

给予或索取,以下是正确的做法吗?我不能让主机列表包含所有服务器,然后我可以选择告诉 run 方法在哪个服务器上执行吗?

env.hosts = ['ServerA']
run( command1 )
env.hosts = ['ServerB']
run( command2 )

谢谢!

鉴于结构限制,显然最好的方法是使用 execute 方法而不是 run

from fabric.tasks import execute

def execute_task(command,
                 host):                  
    """
        wrapper around the execute task of fabric. 
        It runs the command remotely via ssh. 
    """    
    return execute(command, host=host)

如果 ssh 密码相同,则效果会很好,因为您可以在环境中设置 env.password,并且不会要求您输入密码。