class Dockerploy::SSHClient
Wrapper for shell command over ssh
Attributes
host[RW]
password[RW]
port[RW]
username[RW]
Public Class Methods
new(host, username, password, port = 22)
click to toggle source
# File lib/dockerploy/ssh_client.rb, line 8 def initialize(host, username, password, port = 22) @host = host @username = username @password = password @port = port end
Public Instance Methods
command(command)
click to toggle source
# File lib/dockerploy/ssh_client.rb, line 15 def command(command) exit_code = nil Dockerploy.logger.info sprintf('From server: %s Running: %s', @host, command) with_ssh(command) do |c, ssh| Dockerploy.logger.info 'Output: ' ssh.open_channel do |channel| channel.exec(c) do |_, success| abort "FAILED: couldn't execute command (ssh.channel.exec)" unless success channel.on_data do |_, data| print data end channel.on_extended_data do |_, _, data| print data end channel.on_request('exit-status') do |_, data| exit_code = data.read_long end end ssh.loop end end result = exit_code == 0 Dockerploy.logger.info sprintf('Exit Code: %d', exit_code) unless result result end
Private Instance Methods
with_ssh(command, &block)
click to toggle source
# File lib/dockerploy/ssh_client.rb, line 47 def with_ssh(command, &block) Net::SSH.start(@host, @username, password: @password, port: @port) do |ssh| block.call(command, ssh) end end