/usr/lib/ruby/vendor_ruby/net/ssh/multi.rb is in ruby-net-ssh-multi 1.1-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | require 'net/ssh/multi/session'
module Net; module SSH
# 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.
module Multi
# 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.).
def self.start(options={})
session = Session.new(options)
if block_given?
begin
yield session
session.loop
session.close
end
else
return session
end
end
end
end; end
|