module Cloner::SSH
Public Instance Methods
check_ssh_err(ret)
click to toggle source
# File lib/cloner/ssh.rb, line 46 def check_ssh_err(ret) if ret[2] != 0 puts "Error: SSH command exited with #{ret[2]}" puts ret[0] puts ret[1] exit 1 end end
do_ssh() { |ssh| ... }
click to toggle source
# File lib/cloner/ssh.rb, line 8 def do_ssh(&block) Net::SSH.start(ssh_host, ssh_user, ssh_opts) do |ssh| yield ssh end end
ssh_exec!(ssh, command)
click to toggle source
stackoverflow.com/questions/3386233/how-to-get-exit-status-with-rubys-netssh-library
# File lib/cloner/ssh.rb, line 15 def ssh_exec!(ssh, command) stdout_data = "" stderr_data = "" exit_code = nil exit_signal = nil ssh.open_channel do |channel| channel.exec(command) do |ch, success| unless success abort "FAILED: couldn't execute command (ssh.channel.exec)" end channel.on_data do |ch,data| stdout_data+=data end channel.on_extended_data do |ch,type,data| stderr_data+=data end channel.on_request("exit-status") do |ch,data| exit_code = data.read_long end channel.on_request("exit-signal") do |ch, data| exit_signal = data.read_long end end end ssh.loop [stdout_data, stderr_data, exit_code, exit_signal] end
ssh_opts()
click to toggle source
# File lib/cloner/ssh.rb, line 4 def ssh_opts {} end