1
私は興味があります、シェフ以外のルビースクリプトでシェルアウトを使用する可能性はありますか?これを設定するには?ルビースクリプトのシェフの外でso = shellout( "linux cmd")を使うことはできますか?
私は興味があります、シェフ以外のルビースクリプトでシェルアウトを使用する可能性はありますか?これを設定するには?ルビースクリプトのシェフの外で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: インスタンスを自分で作成しないようにしたい場合は、私は通常、私はそれを使用するスクリプトで、このラッパー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
これは基本APIのみを提供し、 'shell_out()'ヘルパーは実際にシェフから来ています。私はあなたの例を編集します:) – coderanger
'Mixlib :: ShellOut.new'を要約すると、ヘルパー 'shell_out'はシェフだけが提供していますか? –
'Mixlib :: Shellout'はクラスなので、インスタンスを初期化する必要があります。シェフは、これをクラスメソッドを取得するためのモジュールにラップしますが、シェフ環境に依存します。あなた自身のモジュールをラップすることもできます。 https://github.com/chef/chef/blob/c1a389c2a8452e9b796aa1d34c4d9e51f4af30c7/lib/chef/mixin/shell_out.rb –