diff options
author | mattie47 <4696925+mattie47@users.noreply.github.com> | 2018-01-07 10:32:52 +1300 |
---|---|---|
committer | Neil Lathwood <neil@lathwood.co.uk> | 2018-01-06 21:32:52 +0000 |
commit | 38e1f4216df5751e856e11532fc894ccfbd4010d (patch) | |
tree | c3e01899e4040388a3fb005ccf5a1f5f40585f09 /lib/oxidized/model | |
parent | 7b98d724002963e0e9dfce59ce024fd69b19ac13 (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.rb | 85 |
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 |