1
我很好奇,有沒有可能在廚師以外的ruby腳本中使用shellout?如何設置這個?是否可以在Chef以外的ruby腳本中使用so = shellout(「linux cmd」)?
我很好奇,有沒有可能在廚師以外的ruby腳本中使用shellout?如何設置這個?是否可以在Chef以外的ruby腳本中使用so = shellout(「linux cmd」)?
gem install mixlib-shellout
,並在Ruby腳本
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
這隻會給你基礎API,'shell_out()'helper實際上來自Chef。我將編輯你的例子:) – coderanger
所以總結'Mixlib :: ShellOut.new'應該被使用?主廚'shell_out'只能由主廚提供? –
'Mixlib :: Shellout'是一個類,所以你需要初始化它的實例。廚師將這個包裝在一個模塊中,可以包含這個模塊以獲得類方法,但是這與廚師環境相關。不過,你可以包裝自己的模塊。 https://github.com/chef/chef/blob/c1a389c2a8452e9b796aa1d34c4d9e51f4af30c7/lib/chef/mixin/shell_out.rb –