Class: Bosh::Deployer::SshServer
- Inherits:
-
Object
- Object
- Bosh::Deployer::SshServer
- Defined in:
- lib/bosh/deployer/ssh_server.rb
Constant Summary collapse
- SSH_EXCEPTIONS =
[ Net::SSH::AuthenticationFailed, Net::SSH::ConnectionTimeout, Net::SSH::Disconnect, Net::SSH::HostKeyError, ]
Instance Method Summary collapse
-
#initialize(user, key, port, logger) ⇒ SshServer
constructor
A new instance of SshServer.
- #readable?(ip) ⇒ Boolean
- #start_session(ip) ⇒ Object
Constructor Details
#initialize(user, key, port, logger) ⇒ SshServer
Returns a new instance of SshServer.
5 6 7 8 9 10 |
# File 'lib/bosh/deployer/ssh_server.rb', line 5 def initialize(user, key, port, logger) @user = user @key = key @port = port @logger = logger end |
Instance Method Details
#readable?(ip) ⇒ Boolean
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# 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) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# 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 |