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.



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

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

#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)


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

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

#first_suitable_parser(host) ⇒ Object



81
82
83
84
85
# File 'lib/sshkit/host.rb', line 81

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



48
49
50
# File 'lib/sshkit/host.rb', line 48

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

#key=(new_key) ⇒ Object



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

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

#keysObject



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

def keys
  Array(@keys)
end

#keys=(new_keys) ⇒ Object



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

def keys=(new_keys)
  @keys = new_keys
end

#local?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/sshkit/host.rb', line 44

def local?
  @local
end

#netssh_optionsObject



66
67
68
69
70
71
72
73
74
75
# File 'lib/sshkit/host.rb', line 66

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



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

def properties
  @properties ||= OpenStruct.new
end

#to_sObject



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

def to_s
  hostname
end

#usernameObject



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

def username
  user
end