summaryrefslogtreecommitdiff
path: root/lib/oxidized/model/planet.rb
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 /lib/oxidized/model/planet.rb
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.
Diffstat (limited to 'lib/oxidized/model/planet.rb')
-rw-r--r--lib/oxidized/model/planet.rb83
1 files changed, 83 insertions, 0 deletions
diff --git a/lib/oxidized/model/planet.rb b/lib/oxidized/model/planet.rb
new file mode 100644
index 0000000..05a369a
--- /dev/null
+++ b/lib/oxidized/model/planet.rb
@@ -0,0 +1,83 @@
+class Planet < Oxidized::Model
+
+ prompt /^\r?([\w.@()-]+[#>]\s?)$/
+ comment '! '
+
+ # example how to handle pager
+ #expect /^\s--More--\s+.*$/ do |data, re|
+ # send ' '
+ # data.sub re, ''
+ #end
+
+ # non-preferred way to handle additional PW prompt
+ #expect /^[\w.]+>$/ do |data|
+ # send "enable\n"
+ # send vars(:enable) + "\n"
+ # data
+ #end
+
+ cmd :all do |cfg|
+ #cfg.gsub! /\cH+\s{8}/, '' # example how to handle pager
+ #cfg.gsub! /\cH+/, '' # example how to handle pager
+ cfg.each_line.to_a[1..-2].join
+ end
+
+ cmd :secret do |cfg|
+ cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'
+ cfg.gsub! /username (\S+) privilege (\d+) (\S+).*/, '<secret hidden>'
+ cfg.gsub! /^username \S+ password \d \S+/, '<secret hidden>'
+ cfg.gsub! /^enable password \d \S+/, '<secret hidden>'
+ cfg.gsub! /wpa-psk ascii \d \S+/, '<secret hidden>'
+ cfg.gsub! /^tacacs-server key \d \S+/, '<secret hidden>'
+ cfg
+ end
+
+ cmd 'show version' do |cfg|
+ 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' do |cfg|
+ cfg.gsub! "\n\r", "\n"
+ cfg = cfg.each_line.to_a
+
+ cfg = cfg.reject { |line| line.match "Building configuration..." }
+
+ 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:/
+ password /^Password:/
+ end
+
+ cfg :telnet, :ssh do
+ post_login 'terminal length 0'
+ # preferred way to handle additional passwords
+ if vars :enable
+ post_login do
+ send "enable\n"
+ cmd vars(:enable)
+ end
+ end
+ pre_logout 'exit'
+ end
+
+end