2016-07-15 51 views

回答

1

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 
+2

這隻會給你基礎API,'shell_out()'helper實際上來自Chef。我將編輯你的例子:) – coderanger

+0

所以總結'Mixlib :: ShellOut.new'應該被使用?主廚'shell_out'只能由主廚提供? –

+1

'Mixlib :: Shellout'是一個類,所以你需要初始化它的實例。廚師將這個包裝在一個模塊中,可以包含這個模塊以獲得類方法,但是這與廚師環境相關。不過,你可以包裝自己的模塊。 https://github.com/chef/chef/blob/c1a389c2a8452e9b796aa1d34c4d9e51f4af30c7/lib/chef/mixin/shell_out.rb –

相關問題