Class: SSHKit::Backend::Libssh

Inherits:
Abstract
  • Object
show all
Defined in:
lib/sshkit/backends/libssh.rb

Defined Under Namespace

Classes: Configuration

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.poolObject

Returns the value of attribute pool.



61
62
63
# File 'lib/sshkit/backends/libssh.rb', line 61

def pool
  @pool
end

Class Method Details

.configObject



64
65
66
# File 'lib/sshkit/backends/libssh.rb', line 64

def config
  @config ||= Configuration.new
end

Instance Method Details

#download!(remote, local, _options = {}) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/sshkit/backends/libssh.rb', line 39

def download!(remote, local, _options = {})
  with_session do |session|
    scp = LibSSH::Scp.new(session, :read, remote)
    scp.init do
      loop do
        case scp.pull_request
        when LibSSH::Scp::REQUEST_NEWFILE
          info "Downloading #{remote}"
          download_file(scp, local)
        when LibSSH::Scp::REQUEST_NEWDIR
          scp.deny_request('Only NEWFILE is acceptable')
        when LibSSH::Scp::REQUEST_EOF
          break
        end
      end
    end
  end
end

#upload!(local, remote, _options = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/sshkit/backends/libssh.rb', line 23

def upload!(local, remote, _options = {})
  with_session do |session|
    scp = LibSSH::Scp.new(session, :write, File.dirname(remote))
    wrap_local_reader(local) do |io, mode|
      scp.init do
        scp.push_file(File.basename(remote), io.size, mode)
        info "Uploading #{remote}"
        while (buf = io.read(BUFSIZ))
          scp.write(buf)
        end
      end
    end
  end
end