summaryrefslogtreecommitdiff
path: root/lib/oxidized/input/ssh.rb
diff options
context:
space:
mode:
authorSaku Ytti <saku@ytti.fi>2013-05-01 13:45:02 +0300
committerSaku Ytti <saku@ytti.fi>2013-05-01 14:06:44 +0300
commitc252a589b6b0274a17bfe40db3fd57ebeea3beb8 (patch)
tree0115a10db0f37506e72aaf4a873aeea93734f6ab /lib/oxidized/input/ssh.rb
parent387b725fcd248d052cfe68da97f03192959ad6a4 (diff)
Add Model#expect, support block at post/pre config
Now we can deal with pager and additional PW prompts, such as 'enable' Examples in IOS model how to use. The Telnet implementation is particularly fugly, I just need one line in 'waitfor' to handle pager while waiting for prompt, but couldn't figure out clean way to do it, so needed to rewrit whole Telnet#waitfor just to add that line.
Diffstat (limited to 'lib/oxidized/input/ssh.rb')
-rw-r--r--lib/oxidized/input/ssh.rb12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/oxidized/input/ssh.rb b/lib/oxidized/input/ssh.rb
index 3471eea..3d14a57 100644
--- a/lib/oxidized/input/ssh.rb
+++ b/lib/oxidized/input/ssh.rb
@@ -15,7 +15,7 @@ module Oxidized
rescue Timeout::Error, Net::SSH::Disconnect, Errno::ECONNREFUSED
return false
end
- @ses = open_shell @ssh unless @exec
+ open_shell @ssh unless @exec
not @ssh.closed?
end
@@ -28,11 +28,15 @@ module Oxidized
end
end
+ def send data
+ @ses.send_data data
+ end
+
private
def disconnect
begin
- @pre_logout.each { |command| cmd command }
+ disconnect_cli
@ssh.loop
@ssh.close if not @ssh.closed?
rescue Net::SSH::Disconnect
@@ -40,9 +44,10 @@ module Oxidized
end
def open_shell ssh
- ses = ssh.open_channel do |ch|
+ @ses = ssh.open_channel do |ch|
ch.on_data do |ch, data|
@output << data
+ @output = @node.model.expects @output
end
ch.request_pty do |ch, success|
raise NoShell, "Can't get PTY" unless success
@@ -52,7 +57,6 @@ module Oxidized
end
end
expect @node.prompt
- ses
end
def exec state=nil