class LogView::DoSSH
Public Class Methods
new(project, obj_config)
click to toggle source
# File lib/log_view/do_ssh.rb, line 5 def initialize project, obj_config @project = project.to_s @thread_array = [] @should_close = false @obj_config = obj_config end
Public Instance Methods
close()
click to toggle source
# File lib/log_view/do_ssh.rb, line 22 def close @should_close = true @thread_array.map(&:exit) end
start()
click to toggle source
# File lib/log_view/do_ssh.rb, line 12 def start each_server do |server| run_on_server(server) {|session, file| exec session, server, file } end end
Protected Instance Methods
execute_command(server, channel, file)
click to toggle source
# File lib/log_view/do_ssh.rb, line 28 def execute_command server, channel, file raise NotImplementedError.new end
Private Instance Methods
each_server(&block)
click to toggle source
# File lib/log_view/do_ssh.rb, line 33 def each_server &block @obj_config.servers.each {|server| @thread_array << block.call(server)} @thread_array.map(&:join) end
exec(session, server, file)
click to toggle source
# File lib/log_view/do_ssh.rb, line 47 def exec session, server, file session.open_channel do |channel| channel.request_pty do |ch| execute_command server, channel, file end end end
run_on_server(server, &block)
click to toggle source
# File lib/log_view/do_ssh.rb, line 38 def run_on_server server, &block Thread.new { Net::SSH.start(server, @obj_config.user, password: @obj_config.password) do |session| @obj_config.files.each {|file| block.call(session, file)} session.loop { not @should_close } end } end