class SSH

Public Class Methods

new(config) click to toggle source
# File lib/ssh.rb, line 6
def initialize(config)
  @config = config
  @ssh = Net::SSH.start(@config[:host], @config[:user])
end

Public Instance Methods

close() click to toggle source
# File lib/ssh.rb, line 37
def close
  @ssh.close
end
exec!(command) click to toggle source
# File lib/ssh.rb, line 11
def exec!(command)
 
  stdout_data = ""
  stderr_data = ""
  exit_code = nil
  @ssh.open_channel do |channel|
    channel.send_channel_request "shell" do |ch, success|
      unless success
        abort "FAILED to connect"
      end
      channel.on_data {|c,data| stdout_data+=data.to_s }
      channel.on_extended_data {|c,data| stderr_data+=data.to_s }
      channel.on_request("exit-status") {|c,data| exit_code = data.read_long }
      ch.send_data "#{command}\n"
      ch.send_data "exit\n"
    end
  end
  @ssh.loop
  if exit_code > 0
    return false
  else
    return stdout_data.strip
  end
end