summaryrefslogtreecommitdiff
path: root/lib/oxidized/model
diff options
context:
space:
mode:
authormattie47 <4696925+mattie47@users.noreply.github.com>2018-01-07 10:32:52 +1300
committerNeil Lathwood <neil@lathwood.co.uk>2018-01-06 21:32:52 +0000
commit38e1f4216df5751e856e11532fc894ccfbd4010d (patch)
treec3e01899e4040388a3fb005ccf5a1f5f40585f09 /lib/oxidized/model
parent7b98d724002963e0e9dfce59ce024fd69b19ac13 (diff)
model: Added Allied Telesis AW+ model (#936)
* Create awplus.rb Added support for Allied Telesis AW+ switches and routers * Add support for Allied Telesis Alliedware Plus products * Add Allied Telesis to Supported Products * Add Allied Telesis to supported models Feature support included: - Telnet and SSH -- Enable/Secret Password - Device info from "show system" command -- Dynamic output e.g. Device Uptime is removed. - Var: remove_secret - User-defined terminal length -- User is not required to "terminal no length" and can keep configured pager length.
Diffstat (limited to 'lib/oxidized/model')
-rw-r--r--lib/oxidized/model/awplus.rb85
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/oxidized/model/awplus.rb b/lib/oxidized/model/awplus.rb
new file mode 100644
index 0000000..1d8fbcd
--- /dev/null
+++ b/lib/oxidized/model/awplus.rb
@@ -0,0 +1,85 @@
+class AWPlus < Oxidized::Model
+
+ #Allied Telesis Alliedware Plus Model#
+ #https://www.alliedtelesis.com/products/software/AlliedWare-Plus
+
+ prompt /^(\r?[\w.@:\/-]+[#>]\s?)$/
+ comment '! '
+
+ #Avoids needing "term length 0" to display full config file.
+ expect /--More--/ do |data, re|
+ send ' '
+ data.sub re, ''
+ end
+
+ #Removes gibberish pager output e.g. VT100 escape codes
+ cmd :all do |cfg|
+ cfg.gsub! /\e\[K/, '' # example how to handle pager - cleareol EL0
+ cfg.gsub! /\e\[7m\e\[m/, '' # example how to handle pager - Reverse SGR7
+ cfg.gsub! /\r/, '' # Filters rogue ^M - see issue #415
+ cfg.each_line.to_a[1..-2].join
+ end
+
+ #Remove passwords from config file.
+ #Add vars "remove_secret: true" to global oxidized config file to enable.
+
+ cmd :secret do |cfg|
+ cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'
+ cfg.gsub! /^(username \S+ privilege \d+) (\S+).*/, '\\1 <secret hidden>'
+ cfg.gsub! /^(username \S+ password \d) (\S+)/, '\\1 <secret hidden>'
+ cfg.gsub! /^(username \S+ secret \d) (\S+)/, '\\1 <secret hidden>'
+ cfg.gsub! /^(enable (password|secret) \d) (\S+)/, '\\1 <secret hidden>'
+ cfg.gsub! /^(\s+(?:password|secret)) (?:\d )?\S+/, '\\1 <secret hidden>'
+ cfg.gsub! /^(tacacs-server key \d) (\S+)/, '\\1 <secret hidden>'
+ cfg
+ end
+
+ #Adds "Show system" output to start of config.
+
+ cmd 'Show System' do |cfg|
+ comment cfg.insert(0,"--------------------------------------------------------------------------------! \n")
+ #Unhash below to write a comment in the config file.
+ cfg.insert(0,"Starting: Show system cmd \n")
+ cfg << "\n \nEnding: show system cmd"
+ comment cfg << "\n--------------------------------------------------------------------------------! \n \n"
+ #Removes the following lines from "show system" in output file. This ensures oxidized diffs are meaningful.
+ comment cfg.each_line.reject { |line|
+ line.match /^$\n/ or #Remove blank lines in "sh sys"
+ line.match /System Status\s*.*/ or
+ line.match /RAM\s*:.*/ or
+ line.match /Uptime\s*:.*/ or
+ line.match /Flash\s*:.*/ or
+ line.match /Current software\s*:.*/ or
+ line.match /Software version\s*:.*/ or
+ line.match /Build date\s*:.*/ }.join
+ end
+
+ #Actually get the devices running config#
+ cmd 'show running-config' do |cfg|
+ cfg
+ end
+
+ #Config required for telnet to detect username prompt
+ cfg :telnet do
+ username /login:\s/
+ end
+
+ #Main login config
+ cfg :telnet, :ssh do
+ post_login do
+ if vars :enable
+ send "enable\n"
+ expect /^Password:\s/
+ cmd vars(:enable) + "\r\n"
+ else
+ cmd 'enable' # Required for Priv-Exec users without enable PW to be put into "enable mode".
+ end
+# cmd 'terminal length 0' #set so the entire config is output without intervention.
+ end
+ pre_logout do
+# cmd 'terminal no length' #Sets term length back to default on exit.
+ send "exit\r\n"
+ end
+ end
+
+end