Module: Net::SSH::Multi

### Home Classes Methods

### In Files

- lib/net/ssh/multi.rb
- 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

### Namespace

- 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

### Methods

- ::start

### Files

- README.rdoc

### Class/Module Index

Quicksearch

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

No matching classes.

# Net::SSH::Multi

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.

### Public Class Methods

start(options={}) click to toggle source

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.).

    # File lib/net/ssh/multi.rb, line 57
    def self.start(options={})
      session = Session.new(options)

      if block_given?
        begin
          yield session
          session.loop
          session.close
        end
      else
        return session
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.