Parent

Included Modules

Net::SSH::Multi::Server

Encapsulates the connection information for a single remote server, as well as the Net::SSH session corresponding to that information. You'll rarely need to instantiate one of these directly: instead, you should use Net::SSH::Multi::Session#use.

Attributes

gateway[R]

The Net::SSH::Gateway instance to use to establish the connection. Will be nil if the connection should be established without a gateway.

host[R]

The host name (or IP address) of the server to connect to.

master[R]

The Net::SSH::Multi::Session instance that manages this server instance.

options[R]

The Hash of additional options to pass to Net::SSH when connecting (including things like :password, and so forth).

user[R]

The user name to use when logging into the server.

Public Class Methods

new(master, host, options={}) click to toggle source

Creates a new Server instance with the given connection information. The master argument must be a reference to the Net::SSH::Multi::Session instance that will manage this server reference. The options hash must conform to the options described for Net::SSH::start, with two additions:

  • :via => a Net::SSH::Gateway instance to use when establishing a connection to this server.

  • :user => the name of the user to use when logging into this server.

The host argument may include the username and port number, in which case those values take precedence over similar values given in the options:

server = Net::SSH::Multi::Server.new(session, 'user@host:1234')
puts server.user #-> user
puts server.port #-> 1234
# File lib/net/ssh/multi/server.rb, line 43
def initialize(master, host, options={})
  @master = master
  @options = options.dup

  @user, @host, port = host.match(/^(?:([^;,:=]+)@|)(.*?)(?::(\d+)|)$/)[1,3]

  user_opt, port_opt = @options.delete(:user), @options.delete(:port)

  @user = @user || user_opt || master.default_user
  port ||= port_opt

  @options[:port] = port.to_i if port

  @gateway = @options.delete(:via)
  @failed = false
end

Public Instance Methods

<=>(server) click to toggle source

Gives server definitions a sort order, and allows comparison.

# File lib/net/ssh/multi/server.rb, line 79
def <=>(server)
  [host, port, user] <=> [server.host, server.port, server.user]
end
[](key) click to toggle source

Returns the value of the server property with the given key. Server properties are described via the :properties key in the options hash when defining the Server.

# File lib/net/ssh/multi/server.rb, line 63
def [](key)
  (options[:properties] || {})[key]
end
[]=(key, value) click to toggle source

Sets the given key/value pair in the :properties key in the options hash. If the options hash has no :properties key, it will be created.

# File lib/net/ssh/multi/server.rb, line 69
def []=(key, value)
  (options[:properties] ||= {})[key] = value
end
busy?(include_invisible=false) click to toggle source

Returns true if the session has been opened, and the session is currently busy (as defined by Net::SSH::Connection::Session#busy?).

# File lib/net/ssh/multi/server.rb, line 143
def busy?(include_invisible=false)
  session && session.busy?(include_invisible)
end
close() click to toggle source

Closes this server's session. If the session has not yet been opened, this does nothing.

# File lib/net/ssh/multi/server.rb, line 149
def close
  session.close if session
ensure
  master.server_closed(self) if session
  @session = nil
end
fail!(flag=true) click to toggle source

Indicates (by default) that this server has just failed a connection attempt. If flag is false, this can be used to reset the failed flag so that a retry may be attempted.

# File lib/net/ssh/multi/server.rb, line 115
def fail!(flag=true)
  @failed = flag
end
failed?() click to toggle source

Returns true if this server has ever failed a connection attempt.

# File lib/net/ssh/multi/server.rb, line 108
def failed?
  @failed
end
hash() click to toggle source

Generates a Fixnum hash value for this object. This function has the property that +a.eql?(b)+ implies +a.hash == b.hash+. The hash value is used by class Hash. Any hash value that exceeds the capacity of a Fixnum will be truncated before being used.

# File lib/net/ssh/multi/server.rb, line 89
def hash
  @hash ||= [host, user, port].hash
end
inspect() click to toggle source

Returns a human-readable representation of this server instance.

# File lib/net/ssh/multi/server.rb, line 103
def inspect
  @inspect ||= "#<%s:0x%x %s>" % [self.class.name, object_id, to_s]
end
port() click to toggle source

Returns the port number to use for this connection.

# File lib/net/ssh/multi/server.rb, line 74
def port
  options[:port] || 22
end
session(require_session=false) click to toggle source

Returns the Net::SSH session object for this server. If require_session is false and the session has not previously been created, this will return nil. If require_session is true, the session will be instantiated if it has not already been instantiated, via the gateway if one is given, or directly (via Net::SSH::start) otherwise.

if server.session.nil?
  puts "connecting..."
  server.session(true)
end

Note that the sessions returned by this are "enhanced" slightly, to make them easier to deal with in a multi-session environment: they have a :server property automatically set on them, that refers to this object (the Server instance that spawned them).

assert_equal server, server.session[:server]
# File lib/net/ssh/multi/server.rb, line 136
def session(require_session=false)
  return @session if @session || !require_session
  @session ||= master.next_session(self)
end
to_s() click to toggle source

Returns a human-readable representation of this server instance.

# File lib/net/ssh/multi/server.rb, line 94
def to_s
  @to_s ||= begin
    s = "#{user}@#{host}"
    s << ":#{options[:port]}" if options[:port]
    s
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.