【发布时间】:2015-02-09 22:00:29
【问题描述】:
我正在为我们的代理农场编写木偶模板。
我们在阿姆斯特丹、新加坡、纽约等地设有数据中心。 每个地理位置中的代理都相应地命名,例如: 新加坡的代理被命名为 sgproxy01-10 ,阿姆斯特丹的代理被命名为 ams2proxy01-30 等等......
在编写这个最终会影响我公司所有服务器的模板时,我想编写一个“IF 语句”,它只会将特定行添加到名称与我尝试设置的模式匹配的代理服务器。
<% if @hostname =~ /^sgproxy\d+/ -%>
if [ "$(cat $LBMEMFILE)" = "0" ]; then
echo -e "\e[35m Membeship in LB: Yes"
elif [ "$(cat $LBMEMFILE)" = "2" ]; then
echo -e "\e[35m Membeship in LB: No $LISTMEMFILE"
<% end -%>
我要设置的正则表达式在第一行:
"/^sgproxy\d+/ -%>"
在当前配置下,主机名以 sgproxy 开头的所有服务器,之后的任何其他数字都将获得这些行。
我想更改正则表达式,使其影响包括 proxy\d+ 的所有服务器。
我尝试了以下正则表达式:
^??proxy\d+
^..proxy\d+
^*proxy\d+
无效。
您能帮我找到正确的正则表达式来匹配主机名中包含“代理”一词的所有服务器吗?
【问题讨论】:
-
你已经做到了...:
/proxy\d+/ -
@hostname包含什么?你怎么知道它不起作用?这是一个rubular link,显示您的正则表达式工作正常。
标签: ruby bash templates puppet