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.



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

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.



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

#transfer_methodObject

Returns the value of attribute transfer_method.



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

def transfer_method
  @transfer_method
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)


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

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

#first_suitable_parser(host) ⇒ Object



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

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



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

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

#key=(new_key) ⇒ Object



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

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

#keysObject



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

def keys
  Array(@keys)
end

#keys=(new_keys) ⇒ Object



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

def keys=(new_keys)
  @keys = new_keys
end

#local?Boolean

Returns:

  • (Boolean)


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

def local?
  @local
end

#netssh_optionsObject



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

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



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

def properties
  @properties ||= OpenStruct.new
end

#to_sObject



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

def to_s
  hostname
end

#usernameObject



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

def username
  user
end