Class: SSHKit::Host

Inherits:
Object
  • Object
show all
Defined in:
lib/sshkit/host.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host_string_or_options_hash) ⇒ Host

Returns a new instance of Host.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/sshkit/host.rb', line 24

def initialize(host_string_or_options_hash)
  @keys  = []
  @local = false

  if host_string_or_options_hash == :local
    @local = true
    @hostname = "localhost"
    @user = ENV['USER'] || ENV['LOGNAME'] || ENV['USERNAME']
  elsif !host_string_or_options_hash.is_a?(Hash)
    @user, @hostname, @port = first_suitable_parser(host_string_or_options_hash).attributes
  else
    host_string_or_options_hash.each do |key, value|
      if self.respond_to?("#{key}=")
        send("#{key}=", value)
      else
        raise ArgumentError, "Unknown host property #{key}"
      end
    end
  end
end

Instance Attribute Details

#hostnameObject

Returns the value of attribute hostname.



9
10
11
# File 'lib/sshkit/host.rb', line 9

def hostname
  @hostname
end

#passwordObject

Returns the value of attribute password.



9
10
11
# File 'lib/sshkit/host.rb', line 9

def password
  @password
end

#portObject

Returns the value of attribute port.



9
10
11
# File 'lib/sshkit/host.rb', line 9

def port
  @port
end

#ssh_optionsObject

Returns the value of attribute ssh_options.



9
10
11
# File 'lib/sshkit/host.rb', line 9

def ssh_options
  @ssh_options
end

#transfer_methodObject

Returns the value of attribute transfer_method.



10
11
12
# File 'lib/sshkit/host.rb', line 10

def transfer_method
  @transfer_method
end

#userObject

Returns the value of attribute user.



9
10
11
# File 'lib/sshkit/host.rb', line 9

def user
  @user
end

Instance Method Details

#eql?(other_host) ⇒ Boolean Also known as: ==, equal?

Returns:

  • (Boolean)


63
64
65
# File 'lib/sshkit/host.rb', line 63

def eql?(other_host)
  other_host.hash == hash
end

#first_suitable_parser(host) ⇒ Object



88
89
90
91
92
# File 'lib/sshkit/host.rb', line 88

def first_suitable_parser(host)
  parser = PARSERS.find{|p| p.suitable?(host) }
  fail UnparsableHostStringError, "Cannot parse host string #{host}" if parser.nil?
  parser.new(host)
end

#hashObject



55
56
57
# File 'lib/sshkit/host.rb', line 55

def hash
  user.hash ^ hostname.hash ^ port.hash
end

#key=(new_key) ⇒ Object



12
13
14
# File 'lib/sshkit/host.rb', line 12

def key=(new_key)
  @keys = [new_key]
end

#keysObject



20
21
22
# File 'lib/sshkit/host.rb', line 20

def keys
  Array(@keys)
end

#keys=(new_keys) ⇒ Object



16
17
18
# File 'lib/sshkit/host.rb', line 16

def keys=(new_keys)
  @keys = new_keys
end

#local?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/sshkit/host.rb', line 51

def local?
  @local
end

#netssh_optionsObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/sshkit/host.rb', line 73

def netssh_options
  {}.tap do |sho|
    sho[:keys]          = keys     if keys.any?
    sho[:port]          = port     if port
    sho[:user]          = user     if user
    sho[:password]      = password if password
    sho[:forward_agent] = true
  end
  .merge(ssh_options || {})
end

#propertiesObject



84
85
86
# File 'lib/sshkit/host.rb', line 84

def properties
  @properties ||= OpenStruct.new
end

#to_sObject



69
70
71
# File 'lib/sshkit/host.rb', line 69

def to_s
  hostname
end

#usernameObject



59
60
61
# File 'lib/sshkit/host.rb', line 59

def username
  user
end