Module: Net::SFTP

Defined in:
lib/net/sftp.rb,
lib/net/sftp/errors.rb,
lib/net/sftp/packet.rb,
lib/net/sftp/request.rb,
lib/net/sftp/session.rb,
lib/net/sftp/version.rb,
lib/net/sftp/protocol.rb,
lib/net/sftp/response.rb,
lib/net/sftp/constants.rb,
lib/net/sftp/protocol/base.rb,
lib/net/sftp/operations/dir.rb,
lib/net/sftp/operations/file.rb,
lib/net/sftp/protocol/01/base.rb,
lib/net/sftp/protocol/01/name.rb,
lib/net/sftp/protocol/02/base.rb,
lib/net/sftp/protocol/03/base.rb,
lib/net/sftp/protocol/04/base.rb,
lib/net/sftp/protocol/04/name.rb,
lib/net/sftp/protocol/05/base.rb,
lib/net/sftp/protocol/06/base.rb,
lib/net/sftp/operations/upload.rb,
lib/net/sftp/operations/download.rb,
lib/net/sftp/protocol/01/attributes.rb,
lib/net/sftp/protocol/04/attributes.rb,
lib/net/sftp/protocol/06/attributes.rb,
lib/net/sftp/operations/file_factory.rb

Overview

Net::SFTP is a pure-Ruby module for programmatically interacting with a remote host via the SFTP protocol (that’s SFTP as in “Secure File Transfer Protocol” produced by the Secure Shell Working Group, not “Secure FTP” and certainly not “Simple FTP”).

See Net::SFTP#start for an introduction to the library. Also, see Net::SFTP::Session for further documentation.

Defined Under Namespace

Modules: Constants, Operations, Protocol Classes: Exception, Packet, Request, Response, Session, StatusException, Version

Class Method Summary collapse

Class Method Details

.start(host, user, ssh_options = {}, sftp_options = {}, &block) ⇒ Object

A convenience method for starting a standalone SFTP session. It will start up an SSH session using the given arguments (see the documentation for Net::SSH::Session for details), and will then start a new SFTP session with the SSH session. This will block until the new SFTP is fully open and initialized before returning it.

sftp = Net::SFTP.start("localhost", "user")
sftp.upload! "/local/file.tgz", "/remote/file.tgz"

If a block is given, it will be passed to the SFTP session and will be called once the SFTP session is fully open and initialized. When the block terminates, the new SSH session will automatically be closed.

Net::SFTP.start("localhost", "user") do |sftp|
  sftp.upload! "/local/file.tgz", "/remote/file.tgz"
end

Extra parameters can be passed:

  • The Net::SSH connection options (see Net::SSH for more information)

  • The Net::SFTP connection options (only :version is supported, to let you set the SFTP protocol version to be used)



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/net/sftp.rb', line 35

def self.start(host, user, ssh_options={}, sftp_options={}, &block)
  session = Net::SSH.start(host, user, ssh_options)
  # We only use a single option here, but this leaves room for more later
  # without breaking the external API.
  version = sftp_options.fetch(:version, nil)
  sftp = Net::SFTP::Session.new(session, version, &block).connect!

  if block_given?
    sftp.loop
    session.close
    return nil
  end

  sftp
rescue Object => anything
  begin
    session.shutdown!
  rescue ::Exception
    # swallow exceptions that occur while trying to shutdown
  end

  raise anything
end