Sha256: bdf99eaf719912033897aec1bc34ac70f4737ac5f3fe197d3031dbf05915d7ca
Contents?: true
Size: 1.11 KB
Versions: 9
Compression:
Stored size: 1.11 KB
Contents
module Meroku # Gives object the ability to execute bash commands on itself via ssh module Tunnelable # rubocop:disable Metrics/AbcSize,Metrics/MethodLength def tunnel_run(cmd) retries = 0 begin code = nil Net::SSH.start(@tunnel_ip, @tunnel_username, keys: @tunnel_key_name, verify_host_key: false) do |ssh| ssh.open_channel do |channel| puts cmd channel.exec cmd do |ch, success| raise "could not execute command" unless success ch.on_data { |_c, data| print data } ch.on_extended_data { |_c, _type, data| print data } ch.on_request("exit-status") { |_ch, data| code = data.read_long } end end.wait end abort "#{cmd} returned #{code} !!" if code != 0 rescue Net::SSH::ConnectionTimeout puts "Net::SSH::ConnectionTimeout" && retry if (retries += 1) < 3 rescue Errno::ECONNREFUSED puts "Net::SSH::ConnectionTimeout" && retry if (retries += 1) < 3 end end end end
Version data entries
9 entries across 9 versions & 1 rubygems