diff options
author | Saku Ytti <saku@ytti.fi> | 2014-03-01 11:35:17 +0200 |
---|---|---|
committer | Saku Ytti <saku@ytti.fi> | 2014-03-01 11:35:17 +0200 |
commit | 7c2565720c898b0573a5a30db958d8a78577f4a4 (patch) | |
tree | 525994271e0b6685439d1c2e12d64a98ed6e69a7 /lib | |
parent | b0c6086256522ad1a7403937968184cab7f89d0c (diff) |
Add Model#output method
Outputs about what we've seen last in input class. Quite dirty in
telnet, so not sure I'm going to support it. Let's see if there is
use-case for it.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/oxidized/input/input.rb | 1 | ||||
-rw-r--r-- | lib/oxidized/input/ssh.rb | 6 | ||||
-rw-r--r-- | lib/oxidized/input/telnet.rb | 9 | ||||
-rw-r--r-- | lib/oxidized/model/model.rb | 4 |
4 files changed, 18 insertions, 2 deletions
diff --git a/lib/oxidized/input/input.rb b/lib/oxidized/input/input.rb index 61f4634..a64a1f4 100644 --- a/lib/oxidized/input/input.rb +++ b/lib/oxidized/input/input.rb @@ -5,6 +5,7 @@ module Oxidized Errno::ECONNREFUSED, ], :warn => [ + IOError, Timeout::Error, Errno::ECONNRESET, Errno::EHOSTUNREACH, diff --git a/lib/oxidized/input/ssh.rb b/lib/oxidized/input/ssh.rb index 5c9a4f0..24401dd 100644 --- a/lib/oxidized/input/ssh.rb +++ b/lib/oxidized/input/ssh.rb @@ -17,7 +17,7 @@ module Oxidized def connect node @node = node @output = '' - @node.model.cfg['ssh'].each { |cb| instance_exec &cb } + @node.model.cfg['ssh'].each { |cb| instance_exec(&cb) } secure = CFG.input[:ssh][:secure] @ssh = Net::SSH.start @node.ip, @node.auth[:username], :password => @node.auth[:password], :timeout => CFG.timeout, @@ -39,6 +39,10 @@ module Oxidized @ses.send_data data end + def output + @output + end + private def disconnect diff --git a/lib/oxidized/input/telnet.rb b/lib/oxidized/input/telnet.rb index 31ed8d0..26df113 100644 --- a/lib/oxidized/input/telnet.rb +++ b/lib/oxidized/input/telnet.rb @@ -9,7 +9,7 @@ module Oxidized def connect node @node = node @timeout = CFG.timeout - @node.model.cfg['telnet'].each { |cb| instance_exec &cb } + @node.model.cfg['telnet'].each { |cb| instance_exec(&cb) } @telnet = Net::Telnet.new 'Host' => @node.ip, 'Waittime' => @timeout, 'Model' => @node.model expect username @@ -30,6 +30,10 @@ module Oxidized @telnet.write data end + def output + @telnet.output + end + private def expect re @@ -59,6 +63,8 @@ end class Net::Telnet ## FIXME: we just need 'line = model.expects line' to handle pager ## how to do this, without redefining the whole damn thing + ## FIXME: we also need output (not sure I'm going to support this) + attr_reader :output def waitfor(options) # :yield: recvdata time_out = @options["Timeout"] waittime = @options["Waittime"] @@ -93,6 +99,7 @@ class Net::Telnet end begin c = @sock.readpartial(1024 * 1024) + @output = c @dumplog.log_dump('<', c) if @options.has_key?("Dump_log") if @options["Telnetmode"] c = rest + c diff --git a/lib/oxidized/model/model.rb b/lib/oxidized/model/model.rb index 2a6cbc4..f95443d 100644 --- a/lib/oxidized/model/model.rb +++ b/lib/oxidized/model/model.rb @@ -53,6 +53,10 @@ module Oxidized out end + def output + @input.output + end + def send data @input.send data end |