diff options
author | Saku Ytti <saku@ytti.fi> | 2015-08-20 14:06:41 +0300 |
---|---|---|
committer | Saku Ytti <saku@ytti.fi> | 2015-08-20 14:06:41 +0300 |
commit | bf93722e4ec00c3cdf6cfbe66820fec73e151d55 (patch) | |
tree | 13de9ff2cb8261a25bedebcf137e3d2b8c8897c4 /lib/oxidized/input/ftp.rb | |
parent | 19aef046c6ed5e75bcb339a5e503bc075def0ebe (diff) |
Added support for Zyxel ZynOS
Model: SAM1316-22 STU-C
ZyNOS version: V3.53(BVE.2)
Diffstat (limited to 'lib/oxidized/input/ftp.rb')
-rw-r--r-- | lib/oxidized/input/ftp.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/oxidized/input/ftp.rb b/lib/oxidized/input/ftp.rb new file mode 100644 index 0000000..ccbf5ef --- /dev/null +++ b/lib/oxidized/input/ftp.rb @@ -0,0 +1,54 @@ +module Oxidized + require 'net/ftp' + require 'timeout' + require_relative 'cli' + + class FTP < Input + RescueFail = { + :debug => [ + #Net::SSH::Disconnect, + ], + :warn => [ + #RuntimeError, + #Net::SSH::AuthenticationFailed, + ], + } + include Input::CLI + + def connect node + @node = node + @node.model.cfg['ftp'].each { |cb| instance_exec(&cb) } + @log = File.open(CFG.input.debug?.to_s + '-ftp', 'w') if CFG.input.debug? + @ftp = Net::FTP.new @node.ip, @node.auth[:username], @node.auth[:password] + connected? + end + + def connected? + @ftp and not @ftp.closed? + end + + def cmd file + Log.debug "FTP: #{file} @ #{@node.name}" + @ftp.getbinaryfile file, nil + end + + # meh not sure if this is the best way, but perhaps better than not implementing send + def send my_proc + my_proc.call + end + + def output + "" + end + + private + + def disconnect + @ftp.close + #rescue Errno::ECONNRESET, IOError + ensure + @log.close if CFG.input.debug? + end + + end +end |