summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2016-11-10 22:19:40 +0100
committerFlorian Klink <flokli@flokli.de>2016-11-10 22:33:10 +0100
commiteaaef17151017210bb20a936c89b43584914f92c (patch)
tree57916a1426b88d91511cbbc55c0d28e1a42d9d62
parentc3514dc1402973162ecf5b4ce8cc88826191b0fb (diff)
add support for PLANET SG switches
So far, only SGS switches were supported. Now, we check the model type during the 'show version' command, and only execute the 'show transceiver details' command in case an SGS switch was detected (as its not supported on SG models). We will also strip lines containing the current System Time and Uptime. These only appear on SG models, but it's a good idea to strip them anyways.
-rw-r--r--README.md3
-rw-r--r--lib/oxidized/model/planet.rb (renamed from lib/oxidized/model/planetsgs.rb)30
2 files changed, 26 insertions, 7 deletions
diff --git a/README.md b/README.md
index 5595685..9ca6854 100644
--- a/README.md
+++ b/README.md
@@ -140,8 +140,7 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacemen
* [Opengear](lib/oxidized/model/opengear.rb)
* Palo Alto
* [PANOS](lib/oxidized/model/panos.rb)
- * PLANET
- * [SGS](lib/oxidized/model/planetsgs.rb)
+ * [PLANET SG/SGS Switches](lib/oxidized/model/planet.rb)
* [pfSense](lib/oxidized/model/pfsense.rb)
* Quanta
* [Quanta / VxWorks 6.6 (1.1.0.8)](lib/oxidized/model/quantaos.rb)
diff --git a/lib/oxidized/model/planetsgs.rb b/lib/oxidized/model/planet.rb
index c240237..05a369a 100644
--- a/lib/oxidized/model/planetsgs.rb
+++ b/lib/oxidized/model/planet.rb
@@ -1,4 +1,4 @@
-class PlanetSGS < Oxidized::Model
+class Planet < Oxidized::Model
prompt /^\r?([\w.@()-]+[#>]\s?)$/
comment '! '
@@ -33,15 +33,35 @@ class PlanetSGS < Oxidized::Model
end
cmd 'show version' do |cfg|
- comment cfg.each_line.to_a[0..-2].join
+ cfg.gsub! "\n\r", "\n"
+ @planetgs = true if cfg.match /^System Name\w*:\w*GS-.*$/
+ @planetsgs = true if cfg.match /SGS-(.*) Device, Compiled on .*$/
+
+ cfg = cfg.each_line.to_a[0...-2]
+
+ # Strip system time and system uptime from planet gs switches
+ cfg = cfg.reject { |line| line.match /System Time\s*:.*/ }
+ cfg = cfg.reject { |line| line.match /System Uptime\s*:.*/ }
+
+ comment cfg.join
end
- cmd 'show running-config'
+ cmd 'show running-config' do |cfg|
+ cfg.gsub! "\n\r", "\n"
+ cfg = cfg.each_line.to_a
+
+ cfg = cfg.reject { |line| line.match "Building configuration..." }
- cmd 'show transceiver detail | include transceiver detail information|found|Type|length|Nominal|wavelength|Base information' do |cfg|
- comment cfg
+ if @planetsgs
+ cfg << cmd('show transceiver detail | include transceiver detail information|found|Type|length|Nominal|wavelength|Base information') do |cfg|
+ comment cfg
+ end
+ end
+
+ cfg.join
end
+
cfg :telnet do
username /^Username:/