| Class | Net::SSH::Multi::Server |
| In: |
lib/net/ssh/multi/server.rb
|
| Parent: | Object |
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.
| == | -> | eql? |
| 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. |
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:
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
43: def initialize(master, host, options={})
44: @master = master
45: @options = options.dup
46:
47: @user, @host, port = host.match(/^(?:([^;,:=]+)@|)(.*?)(?::(\d+)|)$/)[1,3]
48:
49: user_opt, port_opt = @options.delete(:user), @options.delete(:port)
50:
51: @user = @user || user_opt || master.default_user
52: port ||= port_opt
53:
54: @options[:port] = port.to_i if port
55:
56: @gateway = @options.delete(:via)
57: @failed = false
58: end
Gives server definitions a sort order, and allows comparison.
# File lib/net/ssh/multi/server.rb, line 79
79: def <=>(server)
80: [host, port, user] <=> [server.host, server.port, server.user]
81: end
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
115: def fail!(flag=true)
116: @failed = flag
117: end
Returns true if this server has ever failed a connection attempt.
# File lib/net/ssh/multi/server.rb, line 108
108: def failed?
109: @failed
110: end
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
89: def hash
90: @hash ||= [host, user, port].hash
91: end
Returns a human-readable representation of this server instance.
# File lib/net/ssh/multi/server.rb, line 103
103: def inspect
104: @inspect ||= "#<%s:0x%x %s>" % [self.class.name, object_id, to_s]
105: end
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
136: def session(require_session=false)
137: return @session if @session || !require_session
138: @session ||= master.next_session(self)
139: end