Class: Kraaken::Ssh::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/kraaken/ssh/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(ssh, logger:) ⇒ Connection

Returns a new instance of Connection.



4
5
6
7
# File 'lib/kraaken/ssh/connection.rb', line 4

def initialize(ssh, logger:)
  @logger = logger
  @ssh = ssh
end

Instance Method Details

#read_file(path) ⇒ Object



21
22
23
# File 'lib/kraaken/ssh/connection.rb', line 21

def read_file(path)
  run "cat #{path}", log: false
end

#run(positional_script = nil, log: true, script: nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/kraaken/ssh/connection.rb', line 9

def run(positional_script = nil, log: true, script: nil)
  script ||= positional_script
  output = []
  logger.info script if log
  ssh.exec!(script) do |channel, stream, data|
    logger.debug data if log
    output << data
  rescue Encoding::UndefinedConversionError
  end
  output.join("\n")
end

#write_file(path, content) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/kraaken/ssh/connection.rb', line 25

def write_file(path, content)
  run log: false, script: <<~BASH
    cat <<'EOT' > #{path}
    #{content}
    EOT
  BASH
end