class Bosh::Deployer::SshServer
Constants
- SSH_EXCEPTIONS
Attributes
key[R]
logger[R]
port[R]
user[R]
Public Class Methods
new(user, key, port, logger)
click to toggle source
# File lib/bosh/deployer/ssh_server.rb, line 5 def initialize(user, key, port, logger) @user = user @key = key @port = port @logger = logger end
Public Instance Methods
readable?(ip)
click to toggle source
# File lib/bosh/deployer/ssh_server.rb, line 19 def readable?(ip) socket = TCPSocket.new(ip, port) if IO.select([socket], nil, nil, 5) logger.debug("tcp socket #{ip}:#{port} is readable") true else false end rescue SocketError, SystemCallError => e logger.debug("tcp socket #{ip}:#{port} #{e.inspect}") Kernel.sleep(1) false ensure socket.close if socket end
start_session(ip)
click to toggle source
# File lib/bosh/deployer/ssh_server.rb, line 35 def start_session(ip) logger.info("Starting SSH session for port forwarding to #{user}@#{ip}...") session = Net::SSH.start(ip, user, keys: [key], paranoid: false, port: port) logger.debug("ssh #{user}@#{ip}: ESTABLISHED") session rescue *SSH_EXCEPTIONS => e logger.debug("ssh start #{user}@#{ip} failed: #{e.inspect}") Kernel.sleep(1) return nil end