fabric 在两个单独的服务器上 运行 两个单独的命令的正确方法是什么?
What is the proper way for fabric to run two separate commands on two separate servers?
假设我有两个带有关联参数的命令:
command1
command2
我想 运行 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
,并且不会要求您输入密码。
假设我有两个带有关联参数的命令:
command1
command2
我想 运行 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
,并且不会要求您输入密码。