使用Python Fabric库获取当前env.hosts列表的值
我有一段代码(foo
和 bar
是本地服务器):
env.hosts = ['foo', 'bar']
def mytask():
print(env.hosts[0])
这段代码每次循环都会打印出 foo。
你可能知道,Fabric 会遍历 env.hosts
列表,然后对每个服务器执行 mytask()
,具体是这样做的:
fab mytask
执行过程是这样的:
task
在 foo
上执行
task
在 bar
上执行
我想找一种方法,在每次循环中获取当前的主机。
谢谢!
3 个回答
3
谢谢你,Marcelo。
如果你想用到 env.host_string
(比如说为了拼接字符串),一定要在一个任务里面使用。因为在任务外面,这个值是 None
,也就是没有任何内容。
27
你可以直接这样做:
env.hosts = ['foo', 'bar']
def mytask():
print(env.host)
因为当你在fab执行的任务中时,那个变量会自动设置好,不需要你额外去处理。
40
使用 env.host_string
。你可以在 这里 找到所有 env
变量的完整列表。