2016-07-15 7 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: インスタンスを自分で作成しないようにしたい場合は、私は通常、私はそれを使用するスクリプトで、このラッパーfucntionをダンプ:

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()'ヘルパーは実際にシェフから来ています。私はあなたの例を編集します:) – coderanger

+0

'Mixlib :: ShellOut.new'を要約すると、ヘルパー 'shell_out'はシェフだけが提供していますか? –

+1

'Mixlib :: Shellout'はクラスなので、インスタンスを初期化する必要があります。シェフは、これをクラスメソッドを取得するためのモジュールにラップしますが、シェフ環境に依存します。あなた自身のモジュールをラップすることもできます。 https://github.com/chef/chef/blob/c1a389c2a8452e9b796aa1d34c4d9e51f4af30c7/lib/chef/mixin/shell_out.rb –

関連する問題