Module Net::SSH::Multi
In: lib/net/ssh/multi/channel.rb
lib/net/ssh/multi/channel_proxy.rb
lib/net/ssh/multi/dynamic_server.rb
lib/net/ssh/multi/pending_connection.rb
lib/net/ssh/multi/server.rb
lib/net/ssh/multi/server_list.rb
lib/net/ssh/multi/session.rb
lib/net/ssh/multi/session_actions.rb
lib/net/ssh/multi/subsession.rb
lib/net/ssh/multi/version.rb
lib/net/ssh/multi.rb

Net::SSH::Multi is a library for controlling multiple Net::SSH connections via a single interface. It exposes an API similar to that of Net::SSH::Connection::Session and Net::SSH::Connection::Channel, making it simpler to adapt programs designed for single connections to be used with multiple connections.

This library is particularly useful for automating repetitive tasks that must be performed on multiple machines. It executes the commands in parallel, and allows commands to be executed on subsets of servers (defined by groups).

  require 'net/ssh/multi'

  Net::SSH::Multi.start do |session|
    # access servers via a gateway
    session.via 'gateway', 'gateway-user'

    # define the servers we want to use
    session.use 'user1@host1'
    session.use 'user2@host2'

    # define servers in groups for more granular access
    session.group :app do
      session.use 'user@app1'
      session.use 'user@app2'
    end

    # execute commands on all servers
    session.exec "uptime"

    # execute commands on a subset of servers
    session.with(:app).exec "hostname"

    # run the aggregated event loop
    session.loop
  end

See Net::SSH::Multi::Session for more documentation.

Methods

start  

Classes and Modules

Module Net::SSH::Multi::SessionActions
Class Net::SSH::Multi::Channel
Class Net::SSH::Multi::ChannelProxy
Class Net::SSH::Multi::DynamicServer
Class Net::SSH::Multi::PendingConnection
Class Net::SSH::Multi::Server
Class Net::SSH::Multi::ServerList
Class Net::SSH::Multi::Session
Class Net::SSH::Multi::Subsession
Class Net::SSH::Multi::Version

Public Class methods

This is a convenience method for instantiating a new Net::SSH::Multi::Session. If a block is given, the session will be yielded to the block automatically closed (see Net::SSH::Multi::Session#close) when the block finishes. Otherwise, the new session will be returned.

  Net::SSH::Multi.start do |session|
    # ...
  end

  session = Net::SSH::Multi.start
  # ...
  session.close

Any options are passed directly to Net::SSH::Multi::Session.new (q.v.).

[Source]

    # File lib/net/ssh/multi.rb, line 57
57:     def self.start(options={})
58:       session = Session.new(options)
59: 
60:       if block_given?
61:         begin
62:           yield session
63:           session.loop
64:           session.close
65:         end
66:       else
67:         return session
68:       end
69:     end

[Validate]