【问题标题】:Parsing issue with ruby Mixlib::ShellOut in chef厨师中的 ruby​​ Mixlib::ShellOut 解析问题
【发布时间】:2020-06-11 14:59:45
【问题描述】:

我正在尝试扩展我们使用 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-infra chef-recipe mixlib-shellout


    【解决方案1】:

    String.gsub 呢?

    tfa_home.stdout.strip.gsub(/\n\$NF}'/, '')
    

    【讨论】:

    • 我最终使用了tfa_home.stdout.strip.gsub(/[\n\$NF}']/,'')。非常感谢 - 这让我发疯了!
    • /[\n\$NF}']/ - 将在方括号中找到每个 1 符号的出现次数。我打赌你不想用任何东西替换 any N、F、} 和 '。
    猜你喜欢
    • 2016-01-02
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多