Можно ли использовать so = shellout("linux cmd") вне Chef в скрипте ruby?
Мне любопытно, есть ли возможность использовать shellout в скриптах ruby вне Chef? Как это настроить?
1 ответ
gem install mixlib-shellout
и в рубиновом скрипте
require 'mixlib/shellout'
cmd = Mixlib::ShellOut.new('linux cmd')
cmd.run_command
# And then optionally, to raise an exception if the command fails like shell_out!()
cmd.error!
ETA: Если вы хотите избежать создания экземпляра самостоятельно, я обычно выкидываю эту функцию-оболочку в сценарии, где я ее использую:
def shellout(cmd, ok_exits = [0])
run = Mixlib::ShellOut.new(cmd)
run.run_command
if run.error? || !ok_exits.include?(run.exitstatus)
puts "#{cmd} failed: #{run.stderr}"
exit 2
end
run.stdout
end