2016-07-15 6 views

Antwort

1

gem install mixlib-shellout

und in der Ruby-Skript

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: Wenn Sie die Instanz selbst zu schaffen vermeiden wollen, Dump ich in der Regel diese Wrapper fucntion in Skripten, wo ich es verwenden:

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

Das wird Ihnen nur die Basis-API geben, der 'shell_out()' Helfer kommt eigentlich von Chef. Ich bearbeite dein Beispiel :) – coderanger

+0

Also zusammenzufassen 'Mixlib :: ShellOut.new' sollte verwendet werden? Der Helfer 'shell_out' wird nur von Chef angeboten? –

+1

'Mixlib :: Shellout' ist eine Klasse, daher müssen Sie Instanzen davon initialisieren. Chef wickelt dies in ein Modul ein, das enthalten sein kann, um die Klassenmethoden zu erhalten, aber es ist abhängig von der Chef-Umgebung. Sie könnten jedoch Ihr eigenes Modul einpacken. https://github.com/chef/chef/blob/c1a389c2a8452e9b796aa1d34c4d9e51f4af30c7/lib/chef/mixin/shell_out.rb –

Verwandte Themen