在chef中使用ruby Mixlib::ShellOut的解析问题。

问题描述 投票:0回答:1

我正在尝试扩展一个现有的食谱,在这个食谱中,我们使用Mixlib::ShellOut来收集相当数量的关于Oracle安装的信息。大多数情况下,它只是工作。

我试图为TFA运行的地方添加一个节点属性--因为这可以根据版本的不同而变化。从服务器本身,一个简单的ps -ef | grep tfa | grep java | awk '{print $NF}' 给我的正是我所需要的。

当我把它添加到配方中,作为

tfa_home = ::Mixlib::ShellOut.new("ps -ef | grep tfa | grep java | awk '{print $NF}'")
tfa_home.run_command
node.normal['gbucs_oracledb']['orahome']['tfa_home'] = tfa_home.stdout.strip

输出的json似乎得到了一个换行符以及字符串"$NF'"。

"tfa_home": "/u01/app/19.0.0.0/grid/tfa/<hostname>/tfa_home\n$NF}'"

我试过几种不同的方法来转义$NF,但到目前为止还没有成功。有什么明显的解决方案吗?

chef chef-recipe mixlib-shellout
1个回答
1
投票

怎樣 String.gsub ?

tfa_home.stdout.strip.gsub(/\n\$NF}'/, '')
© www.soinside.com 2019 - 2024. All rights reserved.