我正在尝试遍历结构中的所有服务器配置并获取它们的主机名,如下所示:
from fabric.api import env, run
def serv_foo():
env.hosts = ['bla@example.com']
def serv_bar():
env.hosts = ['bla@example2.com']
def get_all_servers():
return {(k,v) for k,v in globals().items() if k.startswith("serv_")}
def get_hostnames():
for serv_name, serv_fptr in get_all_servers():
print(env.hosts)
serv_fptr()
print(env.hosts)
hostname = run("hostname")
print(hostname)
然而这失败了:
>>> fab get_hostnames
>>> []
>>> ['bla@example.com']
>>> No hosts found. Please specify (single) host string for connection:
如何动态更新结构中的主机?
- NOTE1:我知道默认调用是
fab serv_foo get_hostnames
. 对此不感兴趣。 - NOTE2:
execute(serv_fptr)
给出了同样的问题。