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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/sshkit/host.rb', line 24

def initialize(host_string_or_options_hash)

  if host_string_or_options_hash == :local
    @local = true
    @hostname = "localhost"
    @user = Etc.getpwuid.name
  elsif !host_string_or_options_hash.is_a?(Hash)
    suitable_parsers = [
      SimpleHostParser,
      HostWithPortParser,
      HostWithUsernameAndPortParser,
      IPv6HostWithPortParser,
      HostWithUsernameParser,
    ].select do |p|
      p.suitable?(host_string_or_options_hash)
    end

    if suitable_parsers.any?
      suitable_parsers.first.tap do |parser|
        @user, @hostname, @port = parser.new(host_string_or_options_hash).attributes
      end
    else
      raise UnparsableHostStringError, "Cannot parse host string #{host_string_or_options_hash}"
    end
  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.



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

def hostname
  @hostname
end

#passwordObject

Returns the value of attribute password.



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

def password
  @password
end

#portObject

Returns the value of attribute port.



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

def port
  @port
end

#ssh_optionsObject

Returns the value of attribute ssh_options.



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

def ssh_options
  @ssh_options
end

#userObject

Returns the value of attribute user.



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

def user
  @user
end

Instance Method Details

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

Returns:

  • (Boolean)


71
72
73
# File 'lib/sshkit/host.rb', line 71

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

#hashObject



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

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)


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

def local?
  @local
end

#netssh_optionsObject



81
82
83
84
85
86
87
88
89
90
# File 'lib/sshkit/host.rb', line 81

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



92
93
94
# File 'lib/sshkit/host.rb', line 92

def properties
  @properties ||= OpenStruct.new
end

#to_sObject



77
78
79
# File 'lib/sshkit/host.rb', line 77

def to_s
  hostname
end

#usernameObject



67
68
69
# File 'lib/sshkit/host.rb', line 67

def username
  user
end