Class: Dumbcli::Device::Base
- Inherits:
-
Object
- Object
- Dumbcli::Device::Base
show all
- Defined in:
- lib/dumbcli/device/base.rb
Instance Method Summary
collapse
Constructor Details
#initialize(host, options = {}) ⇒ Base
Returns a new instance of Base.
6
7
8
9
10
|
# File 'lib/dumbcli/device/base.rb', line 6
def initialize(host, options={})
raise ArgumentError, 'host is required' unless host
@host = host
@options = options
end
|
Instance Method Details
#close ⇒ Object
48
49
50
51
52
|
# File 'lib/dumbcli/device/base.rb', line 48
def close
return unless established?
execute_exit
end
|
#connect ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/dumbcli/device/base.rb', line 28
def connect
return if established?
Dumbcli.logger.info "Trying to connect #{@host}"
@connection = Net::Telnet.new('Prompt' => prompt,
'Proxy' => IO.popen(login_cmd, 'r+'),
'Timeout' => @options[:timeout] || 30)
begin
result = @connection.waitfor(prompt)
if result =~ error_code
@connection.close
raise $1
end
rescue
@connection.close
raise
end
end
|
#established? ⇒ Boolean
24
25
26
|
# File 'lib/dumbcli/device/base.rb', line 24
def established?
@connection && !@connection.sock.closed?
end
|
#execute(cmd) ⇒ Object
Also known as:
exec
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/dumbcli/device/base.rb', line 12
def execute(cmd)
raise ArgumentError, 'cmd is required' unless cmd
connect unless established?
Dumbcli.logger.info "Executing: #{cmd}"
@connection.cmd(cmd).tap {|result|
Dumbcli.logger.debug result
}
end
|