summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/Supported-OS-Types.md4
-rw-r--r--lib/oxidized/model/gcombnps.rb85
2 files changed, 89 insertions, 0 deletions
diff --git a/docs/Supported-OS-Types.md b/docs/Supported-OS-Types.md
index a6ee713..c2035b0 100644
--- a/docs/Supported-OS-Types.md
+++ b/docs/Supported-OS-Types.md
@@ -77,6 +77,8 @@
* [XOS](/lib/oxidized/model/xos.rb)
* F5
* [TMOS](/lib/oxidized/model/tmos.rb)
+ * Fiberstore
+ * [S3800](/lib/oxidized/model/gcombnps.rb)
* Force10
* [DNOS](/lib/oxidized/model/dnos.rb)
* [FTOS](/lib/oxidized/model/ftos.rb)
@@ -84,6 +86,8 @@
* [FortiOS](/lib/oxidized/model/fortios.rb)
* Fujitsu
* [PRIMERGY Blade switch 1/10Gbe](/lib/oxidized/model/fujitsupy.rb)
+ * GCOM Technologies
+ * [Broadband Network Platform Software](/lib/oxidized/model/gcombnps.rb)
* Hatteras
* [Hatteras](/lib/oxidized/model/hatteras.rb)
* Hirschmann
diff --git a/lib/oxidized/model/gcombnps.rb b/lib/oxidized/model/gcombnps.rb
new file mode 100644
index 0000000..4a97162
--- /dev/null
+++ b/lib/oxidized/model/gcombnps.rb
@@ -0,0 +1,85 @@
+class GcomBNPS < Oxidized::Model
+ # For switches from GCOM Technologies Co.,Ltd. running the "Broadband Network Platform Software"
+ # Author: Frederik Kriewitz <frederik@kriewitz.eu>
+ #
+ # tested with:
+ # - S5330 (aka Fiberstore S3800)
+
+ prompt /^\r?([\w.@()-]+?(\(1-16 chars\))?[#>:]\s?)$/ # also match SSH password promt (post_login commands are sent after the first prompt)
+ comment '! '
+
+# alternative to handle the SSH login, but this breaks telnet
+# expect /^Password\(1-16 chars\):/ do |data|
+# send @node.auth[:password] + "\n"
+# ''
+# end
+
+ # handle pager (can't be disabled?)
+ expect /^\.\.\.\.press ENTER to next line, CTRL_C to quit, other key to next page\.\.\.\.$/ do |data, re|
+ send ' '
+ data.sub re, ''
+ end
+
+ cmd :all do |cfg|
+ cfg = cfg.gsub " \e[73D\e[K", '' # remove garbage remaining from the pager
+ cfg.each_line.to_a[1..-2].join
+ end
+
+ cmd :secret do |cfg|
+ cfg.gsub! /^(snmp-server community)\s+[^\s]+\s+(.*)/, '\\1 <community hidden> \\2'
+ cfg
+ end
+
+ cmd 'show running-config' do |cfg|
+ cfg
+ end
+
+ cmd 'show interface sfp' do |cfg|
+ out = []
+ cfg.each_line do |line|
+ next if line.match /^ Temperature/
+ next if line.match /^ Voltage\(V\)/
+ next if line.match /^ Bias Current\(mA\)/
+ next if line.match /^ RX Power\(dBM\)/
+ next if line.match /^ TX Power\(dBM\)/
+ out << line
+ end
+
+ comment out.join
+ end
+
+
+ cmd 'show version' do |cfg|
+ comment cfg
+ end
+
+ cmd 'show system' do |cfg|
+ out = []
+ cfg.each_line do |line|
+ next if line.match /^system run time :/
+ next if line.match /^switch temperature :/
+ out << line
+ end
+
+ comment out.join
+ end
+
+ cfg :telnet do
+ username /^Username\(1-32 chars\):/
+ password /^Password\(1-16 chars\):/
+ end
+
+ cfg :ssh do
+ # the switch blindy accepts the SSH connection without password validation and then spawns a telnet login prompt
+ # first thing we've to send is the password
+ post_login do
+ send @node.auth[:password] + "\n"
+ end
+ end
+
+ cfg :telnet, :ssh do
+ pre_logout 'exit'
+ end
+
+end
+