From 340aa7eff51f3c08a2764b3c5882b0568b1442fb Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 17:47:05 -0500 Subject: Adding Alvarion model --- lib/oxidized/model/alvarion | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/oxidized/model/alvarion diff --git a/lib/oxidized/model/alvarion b/lib/oxidized/model/alvarion new file mode 100644 index 0000000..3c762de --- /dev/null +++ b/lib/oxidized/model/alvarion @@ -0,0 +1,13 @@ +class Alvarion < Oxidized::Model + + # Used in Alvarion wisp equipment + + # Run this command as an instance of Model so we can access node + pre do + cmd "#{node.auth[:password]}.cfg" + end + + + cfg :tftp {} + +end -- cgit v1.2.1 From 87e95ab4f947d33e0fc42bb8892cb0112f620b43 Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 17:49:14 -0500 Subject: Add UDP TFTP --- lib/oxidized/input/tftp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 lib/oxidized/input/tftp diff --git a/lib/oxidized/input/tftp b/lib/oxidized/input/tftp new file mode 100644 index 0000000..bfb69f6 --- /dev/null +++ b/lib/oxidized/input/tftp @@ -0,0 +1,58 @@ +module Oxidized + require 'net/tftp' + require 'timeout' + require 'stringio' + require_relative 'cli' + + class TFTP < Input + RescueFail = { + :debug => [ + #Net::SSH::Disconnect, + ], + :warn => [ + #RuntimeError, + #Net::SSH::AuthenticationFailed, + ], + } + + 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.info file.methods(true) + Oxidized.logger.debug "TFTP: #{file} @ #{@node.name}" + config = StringIO.new + @tftp.getbinary file, config + config.rewind + config.read + 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 + # TFTP uses UDP, there is no connection to close + #rescue Errno::ECONNRESET, IOError + ensure + @log.close if Oxidized.config.input.debug? + end + + end +end -- cgit v1.2.1 From c12667b99594ef234f0ea181a0b38dcf03a3af43 Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 17:54:00 -0500 Subject: Update README.MD --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c8043f..0a46d73 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,8 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacemen * AOS7 * ISAM * Wireless + * Alvarion + * BreezeACCESS * Arista * EOS * Arris @@ -747,7 +749,7 @@ The following objects exist in Oxidized. ## Input * gets config from nodes * must implement 'connect', 'get', 'cmd' - * 'ssh' and 'telnet' implemented + * 'ssh', 'telnet, sqlite, ftp, and tftp' implemented ## Output * stores config -- cgit v1.2.1 From 990aa6036c427a5cf56da5a7c007bcd6a1938a0a Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 17:54:49 -0500 Subject: Update README.MD Fix mistake on input --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a46d73..4534727 100644 --- a/README.md +++ b/README.md @@ -749,7 +749,7 @@ The following objects exist in Oxidized. ## Input * gets config from nodes * must implement 'connect', 'get', 'cmd' - * 'ssh', 'telnet, sqlite, ftp, and tftp' implemented + * 'ssh', 'telnet, ftp, and tftp' implemented ## Output * stores config -- cgit v1.2.1 From 35f20515be92d57245abd24b9b2969d5d70922ba Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 17:56:09 -0500 Subject: Update tftp --- lib/oxidized/input/tftp | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/oxidized/input/tftp b/lib/oxidized/input/tftp index bfb69f6..cac8f2d 100644 --- a/lib/oxidized/input/tftp +++ b/lib/oxidized/input/tftp @@ -49,7 +49,6 @@ module Oxidized def disconnect # TFTP uses UDP, there is no connection to close - #rescue Errno::ECONNRESET, IOError ensure @log.close if Oxidized.config.input.debug? end -- cgit v1.2.1 From cc1184abc98fd270ee8fee4925f38de08c908bb8 Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 18:02:00 -0500 Subject: Update Filename and tftp load --- lib/oxidized/input/tftp | 57 ------------------------------------------ lib/oxidized/input/tftp.rb | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 57 deletions(-) delete mode 100644 lib/oxidized/input/tftp create mode 100644 lib/oxidized/input/tftp.rb diff --git a/lib/oxidized/input/tftp b/lib/oxidized/input/tftp deleted file mode 100644 index cac8f2d..0000000 --- a/lib/oxidized/input/tftp +++ /dev/null @@ -1,57 +0,0 @@ -module Oxidized - require 'net/tftp' - require 'timeout' - require 'stringio' - require_relative 'cli' - - class TFTP < Input - RescueFail = { - :debug => [ - #Net::SSH::Disconnect, - ], - :warn => [ - #RuntimeError, - #Net::SSH::AuthenticationFailed, - ], - } - - 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.info file.methods(true) - Oxidized.logger.debug "TFTP: #{file} @ #{@node.name}" - config = StringIO.new - @tftp.getbinary file, config - config.rewind - config.read - 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 - # TFTP uses UDP, there is no connection to close - ensure - @log.close if Oxidized.config.input.debug? - end - - end -end diff --git a/lib/oxidized/input/tftp.rb b/lib/oxidized/input/tftp.rb new file mode 100644 index 0000000..2a6a088 --- /dev/null +++ b/lib/oxidized/input/tftp.rb @@ -0,0 +1,62 @@ +module Oxidized + require 'timeout' + require 'stringio' + require_relative 'cli' + + class TFTP < Input + RescueFail = { + :debug => [ + #Net::SSH::Disconnect, + ], + :warn => [ + #RuntimeError, + #Net::SSH::AuthenticationFailed, + ], + } + + include Input::CLI + + # TFTP utilizes UDP, there is not a connection. We simply specify an IP and send/receive data. + def connect node + begin + require 'net/tftp' + rescue LoadError + raise OxidizedError, 'net/tftp not found: sudo gem install net-tftp' + end + @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.info file.methods(true) + Oxidized.logger.debug "TFTP: #{file} @ #{@node.name}" + config = StringIO.new + @tftp.getbinary file, config + config.rewind + config.read + 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 + # TFTP uses UDP, there is no connection to close + #rescue Errno::ECONNRESET, IOError + ensure + @log.close if Oxidized.config.input.debug? + end + + end +end -- cgit v1.2.1 From f9bd7b3b3564d99fb34c82edfc6b779b76496758 Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 18:07:58 -0500 Subject: Remove unnecessary debugging --- lib/oxidized/input/tftp.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/oxidized/input/tftp.rb b/lib/oxidized/input/tftp.rb index 2a6a088..c2f3a16 100644 --- a/lib/oxidized/input/tftp.rb +++ b/lib/oxidized/input/tftp.rb @@ -31,7 +31,6 @@ module Oxidized end def cmd file - Oxidized.logger.info file.methods(true) Oxidized.logger.debug "TFTP: #{file} @ #{@node.name}" config = StringIO.new @tftp.getbinary file, config -- cgit v1.2.1 From 5d99baa74881271af4e73a2072325b5959ed9371 Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 18:20:31 -0500 Subject: Update tftp.rb --- lib/oxidized/input/tftp.rb | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/lib/oxidized/input/tftp.rb b/lib/oxidized/input/tftp.rb index c2f3a16..18028c6 100644 --- a/lib/oxidized/input/tftp.rb +++ b/lib/oxidized/input/tftp.rb @@ -2,27 +2,19 @@ module Oxidized require 'timeout' 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 - RescueFail = { - :debug => [ - #Net::SSH::Disconnect, - ], - :warn => [ - #RuntimeError, - #Net::SSH::AuthenticationFailed, - ], - } include Input::CLI # TFTP utilizes UDP, there is not a connection. We simply specify an IP and send/receive data. def connect node - begin - require 'net/tftp' - rescue LoadError - raise OxidizedError, 'net/tftp not found: sudo gem install net-tftp' - end @node = node @node.model.cfg['tftp'].each { |cb| instance_exec(&cb) } @@ -38,21 +30,10 @@ module Oxidized config.read 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 # TFTP uses UDP, there is no connection to close - #rescue Errno::ECONNRESET, IOError ensure @log.close if Oxidized.config.input.debug? end -- cgit v1.2.1 From 8473dd0a6df171733ca6c02670ed1e1a5f894b00 Mon Sep 17 00:00:00 2001 From: MajesticFalcon Date: Tue, 30 Aug 2016 18:21:03 -0500 Subject: Update tftp.rb --- lib/oxidized/input/tftp.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/oxidized/input/tftp.rb b/lib/oxidized/input/tftp.rb index 18028c6..78164d0 100644 --- a/lib/oxidized/input/tftp.rb +++ b/lib/oxidized/input/tftp.rb @@ -1,5 +1,4 @@ module Oxidized - require 'timeout' require 'stringio' require_relative 'cli' -- cgit v1.2.1