summaryrefslogtreecommitdiff
path: root/lib/oxidized/input
diff options
context:
space:
mode:
authorytti <saku@ytti.fi>2016-08-31 02:22:34 +0300
committerGitHub <noreply@github.com>2016-08-31 02:22:34 +0300
commit42d07c73d0483d35f3dbb93fe4944cc4b95d8192 (patch)
treec0647aaeb28902bc960a4749e50e3c884bb0a9d3 /lib/oxidized/input
parent5c1173ff1cf130a271267beb1e11a371e6134908 (diff)
parent8473dd0a6df171733ca6c02670ed1e1a5f894b00 (diff)
Merge pull request #548 from MajesticFalcon/master
Add Alvarion support
Diffstat (limited to 'lib/oxidized/input')
-rw-r--r--lib/oxidized/input/tftp.rb41
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