Sha256: dd25aa0c30b1e9274581a6664e6cd24061d38408523ca21f136f5e0894ece09f

Contents?: true

Size: 889 Bytes

Versions: 11

Compression:

Stored size: 889 Bytes

Contents

# frozen_string_literal: true

module Groundskeeper
  # Wraps ssh executable.
  class Ssh
    COMMAND = "ssh"
    DEFAULT_CONNECT_TIMEOUT_IN_S = 5
    # ssh arguments
    CONNECT_WITH_TIMEOUT = "-o ConnectTimeout=#{DEFAULT_CONNECT_TIMEOUT_IN_S}".freeze
    REMOTE_ECHO =
      "%<options>s %<username>s@%<domain_name>s \"echo 'groundskeeper'\""

    attr_reader :domain_name, :ssh, :username

    def self.build(username, domain_name)
      new Executable.new(COMMAND), username, domain_name
    end

    def initialize(ssh, username, domain_name)
      @ssh = ssh
      @username = username
      @domain_name = domain_name
    end

    def can_connect?
      ssh.execute(format(REMOTE_ECHO,
                         options: CONNECT_WITH_TIMEOUT,
                         username: username,
                         domain_name: domain_name)).strip == "groundskeeper"
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
groundskeeper-bitcore-0.35.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.34.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.33.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.32.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.31.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.29.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.28.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.27.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.26.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.24.0 lib/groundskeeper/ssh.rb
groundskeeper-bitcore-0.23.0 lib/groundskeeper/ssh.rb