我正在尝试获取 mcollective 中每个节点的所有 IP 地址的列表。我遇到的问题是ipaddress_${interface}
名称范围很广,尤其是在不再使用 eth# 的较新的 EL 系统上。有没有办法为事实名称传递通配符或正则表达式?
我的目标是能够使用mco inventory
或同样快速地生成包含所有节点上每个 IP 地址的报告:
我尝试过几个不同的报告,但都失败了:
# cat ipaddrs.mc
inventory do
format "%40s:\t%24s\t%s"
fields { [ identity, facts["server_role"], facts[/ipaddress_(.*)/] ] }
end
# mco inventory --script ipaddrs.mc
作为一种解决方法,我正在获取集体中所有节点的列表,并获取我想要的事实。这可行,但仅几百个节点需要几分钟:
for server in $(mco find ); do
echo -e "${server}: $(mco inventory ${server} \
|grep ipaddress_ |egrep -v '_(lo|flan|dock)' \
|awk '{print $3}' |sort |tr '\n' ' ')"
done