1

我正在尝试获取 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
4

0 回答 0