Проблема с синтаксическим анализом Ruby Mixlib :: ShellOut в chef

Я пытаюсь расширить существующую кулинарную книгу, в которой мы используем 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, но пока безуспешно. Есть очевидное решение?

1 ответ

Решение

А что насчет String.gsub?

tfa_home.stdout.strip.gsub(/\n\$NF}'/, '')
Другие вопросы по тегам