class SSHClient::Connection
Attributes
config[R]
transport[R]
Public Class Methods
new(config_name = nil, hostname: nil, username: nil, password: nil, logger: nil, &blk)
click to toggle source
# File lib/ssh_client/connection.rb, line 11 def initialize(config_name = nil, hostname: nil, username: nil, password: nil, logger: nil, &blk) build_config hostname, username, password, logger: logger if hostname @config ||= SSHClient.config config_name @transport = config.transport open batch_exec(&blk) if block_given? ObjectSpace.define_finalizer(self) { transport.close } end
Public Instance Methods
batch_exec(&blk)
click to toggle source
# File lib/ssh_client/connection.rb, line 44 def batch_exec(&blk) exec CommandBuilder.new(&blk).to_a.join("\n"), close: true end
build_config(hostname, username, password, logger: nil)
click to toggle source
# File lib/ssh_client/connection.rb, line 22 def build_config(hostname, username, password, logger: nil) @config ||= SSHClient.configure(hostname) do |conf| conf.hostname = hostname conf.username = username conf.password = password conf.logger = logger end end
exec(command, close: false)
click to toggle source
# File lib/ssh_client/connection.rb, line 31 def exec(command, close: false) config.logger.info ">> #{command}" transport.send_message command, close: close end
exec!(command = nil, &blk)
click to toggle source
# File lib/ssh_client/connection.rb, line 36 def exec!(command = nil, &blk) buffer = String.new listener = add_listener(:stdout) { |data| buffer << data } block_given? ? batch_exec(&blk) : exec(command, close: true) remove_listener listener buffer end