diff options
author | ytti <saku@ytti.fi> | 2016-08-31 02:22:34 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-31 02:22:34 +0300 |
commit | 42d07c73d0483d35f3dbb93fe4944cc4b95d8192 (patch) | |
tree | c0647aaeb28902bc960a4749e50e3c884bb0a9d3 /lib/oxidized/input | |
parent | 5c1173ff1cf130a271267beb1e11a371e6134908 (diff) | |
parent | 8473dd0a6df171733ca6c02670ed1e1a5f894b00 (diff) |
Merge pull request #548 from MajesticFalcon/master
Add Alvarion support
Diffstat (limited to 'lib/oxidized/input')
-rw-r--r-- | lib/oxidized/input/tftp.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/oxidized/input/tftp.rb b/lib/oxidized/input/tftp.rb new file mode 100644 index 0000000..78164d0 --- /dev/null +++ b/lib/oxidized/input/tftp.rb @@ -0,0 +1,41 @@ +module Oxidized + require 'stringio' + require_relative 'cli' + + begin + require 'net/tftp' + rescue LoadError + raise OxidizedError, 'net/tftp not found: sudo gem install net-tftp' + end + + class TFTP < Input + + include Input::CLI + + # TFTP utilizes UDP, there is not a connection. We simply specify an IP and send/receive data. + def connect node + @node = node + + @node.model.cfg['tftp'].each { |cb| instance_exec(&cb) } + @log = File.open(Oxidized::Config::Log + "/#{@node.ip}-tftp", 'w') if Oxidized.config.input.debug? + @tftp = Net::TFTP.new @node.ip + end + + def cmd file + Oxidized.logger.debug "TFTP: #{file} @ #{@node.name}" + config = StringIO.new + @tftp.getbinary file, config + config.rewind + config.read + end + + private + + def disconnect + # TFTP uses UDP, there is no connection to close + ensure + @log.close if Oxidized.config.input.debug? + end + + end +end |