使用Python Fabric库获取当前env.hosts列表的值

25 投票
3 回答
17376 浏览
提问于 2025-04-16 01:50

我有一段代码(foobar 是本地服务器):

env.hosts = ['foo', 'bar']

def mytask():
    print(env.hosts[0])

这段代码每次循环都会打印出 foo

你可能知道,Fabric 会遍历 env.hosts 列表,然后对每个服务器执行 mytask(),具体是这样做的:

fab mytask

执行过程是这样的:

taskfoo 上执行
taskbar 上执行

我想找一种方法,在每次循环中获取当前的主机

谢谢!

3 个回答

3

谢谢你,Marcelo。

如果你想用到 env.host_string(比如说为了拼接字符串),一定要在一个任务里面使用。因为在任务外面,这个值是 None,也就是没有任何内容。

27

你可以直接这样做:

env.hosts = ['foo', 'bar']

def mytask():
     print(env.host)

因为当你在fab执行的任务中时,那个变量会自动设置好,不需要你额外去处理。

40

使用 env.host_string。你可以在 这里 找到所有 env 变量的完整列表。

撰写回答