diff options
Diffstat (limited to 'lib/oxidized/model')
-rw-r--r-- | lib/oxidized/model/acos.rb | 16 | ||||
-rw-r--r-- | lib/oxidized/model/aosw.rb | 1 | ||||
-rw-r--r-- | lib/oxidized/model/asa.rb | 5 | ||||
-rw-r--r-- | lib/oxidized/model/br6910.rb | 45 | ||||
-rw-r--r-- | lib/oxidized/model/coriant8600.rb | 30 | ||||
-rw-r--r-- | lib/oxidized/model/corianttmos.rb | 25 | ||||
-rw-r--r-- | lib/oxidized/model/cumulus.rb | 14 | ||||
-rw-r--r-- | lib/oxidized/model/datacom.rb | 7 | ||||
-rw-r--r-- | lib/oxidized/model/edgeswitch.rb | 4 | ||||
-rw-r--r-- | lib/oxidized/model/eos.rb | 1 | ||||
-rw-r--r-- | lib/oxidized/model/fortios.rb | 2 | ||||
-rw-r--r-- | lib/oxidized/model/gaiaos.rb | 46 | ||||
-rw-r--r-- | lib/oxidized/model/junos.rb | 3 | ||||
-rw-r--r-- | lib/oxidized/model/model.rb | 4 | ||||
-rw-r--r-- | lib/oxidized/model/pfsense.rb | 18 | ||||
-rw-r--r-- | lib/oxidized/model/procurve.rb | 2 | ||||
-rw-r--r-- | lib/oxidized/model/quantaos.rb | 35 | ||||
-rw-r--r-- | lib/oxidized/model/routeros.rb | 2 | ||||
-rw-r--r-- | lib/oxidized/model/saos.rb | 6 | ||||
-rw-r--r-- | lib/oxidized/model/screenos.rb | 1 | ||||
-rw-r--r-- | lib/oxidized/model/timos.rb | 71 |
21 files changed, 316 insertions, 22 deletions
diff --git a/lib/oxidized/model/acos.rb b/lib/oxidized/model/acos.rb index bb9846e..47649a2 100644 --- a/lib/oxidized/model/acos.rb +++ b/lib/oxidized/model/acos.rb @@ -6,6 +6,13 @@ class ACOS < Oxidized::Model ##ACOS prompt changes depending on the state of the device prompt /^([-\w.\/:?\[\]\(\)]+[#>]\s?)$/ + cmd :secret do |cfg| + cfg.gsub!(/community read encrypted (\S+)/, 'community read encrypted <hidden>') # snmp + cfg.gsub!(/secret encrypted (\S+)/, 'secret encrypted <hidden>') # tacacs-server + cfg.gsub!(/password encrypted (\S+)/, 'password encrypted <hidden>') # user + cfg + end + cmd 'show version' do |cfg| cfg.gsub! /\s(Last configuration saved at).*/, ' \\1 <removed>' cfg.gsub! /\s(Memory).*/, ' \\1 <removed>' @@ -22,11 +29,20 @@ class ACOS < Oxidized::Model comment cfg end + cmd 'show partition-config all' do |cfg| + cfg.gsub! /(Current configuration).*/, '\\1 <removed>' + cfg.gsub! /(Configuration last updated at).*/, '\\1 <removed>' + cfg.gsub! /(Configuration last saved at).*/, '\\1 <removed>' + cfg.gsub! /(Configuration last synchronized at).*/, '\\1 <removed>' + cfg + end + cmd 'show running-config all-partitions' do |cfg| cfg.gsub! /(Current configuration).*/, '\\1 <removed>' cfg.gsub! /(Configuration last updated at).*/, '\\1 <removed>' cfg.gsub! /(Configuration last saved at).*/, '\\1 <removed>' cfg.gsub! /(Configuration last synchronized at).*/, '\\1 <removed>' + cfg end cmd 'show aflex all-partitions' do |cfg| diff --git a/lib/oxidized/model/aosw.rb b/lib/oxidized/model/aosw.rb index 4f09e51..394561f 100644 --- a/lib/oxidized/model/aosw.rb +++ b/lib/oxidized/model/aosw.rb @@ -22,6 +22,7 @@ class AOSW < Oxidized::Model cfg.gsub!(/key (\S+)$/, 'key <secret removed>') cfg.gsub!(/secret (\S+)$/, 'secret <secret removed>') cfg.gsub!(/wpa-passphrase (\S+)$/, 'wpa-passphrase <secret removed>') + cfg.gsub!(/bkup-passwords (\S+)$/, 'bkup-passwords <secret removed>') cfg end diff --git a/lib/oxidized/model/asa.rb b/lib/oxidized/model/asa.rb index 317463d..df30059 100644 --- a/lib/oxidized/model/asa.rb +++ b/lib/oxidized/model/asa.rb @@ -13,6 +13,9 @@ class ASA < Oxidized::Model cmd :secret do |cfg| cfg.gsub! /enable password (\S+) (.*)/, 'enable password <secret hidden> \2' cfg.gsub! /username (\S+) password (\S+) (.*)/, 'username \1 password <secret hidden> \3' + cfg.gsub! /ikev2 pre-shared-key (\S+)/, 'ikev2 pre-shared-key <secret hidden>' + cfg.gsub! /ikev2 (remote|local)-authentication pre-shared-key (\S+)/, 'ikev2 \1-authentication pre-shared-key <secret hidden>' + cfg.gsub! /^(aaa-server TACACS\+? \(\S+\) host.*\n\skey) \S+$/mi, '\1 <secret hidden>' cfg end @@ -52,7 +55,7 @@ class ASA < Oxidized::Model if vars :enable post_login do send "enable\n" - send vars(:enable) + "\n" + cmd vars(:enable) end end post_login 'terminal pager 0' diff --git a/lib/oxidized/model/br6910.rb b/lib/oxidized/model/br6910.rb new file mode 100644 index 0000000..b5c9bcf --- /dev/null +++ b/lib/oxidized/model/br6910.rb @@ -0,0 +1,45 @@ +
+class BR6910 < Oxidized::Model
+
+ prompt /^Vty-[0-9]\#$/
+ comment '! '
+
+ # not possible to disable paging prior to show running-config
+ expect /^((.*)Others to exit ---(.*))$/ do |data, re|
+ send 'a'
+ data.sub re, ''
+ end
+
+ cmd :all do |cfg|
+ # sometimes br6910s inserts arbitrary whitespace after commands are
+ # issued on the CLI, from run to run. this normalises the output.
+ cfg.each_line.to_a[1..-2].drop_while { |e| e.match /^\s+$/ }.join
+ end
+
+ cmd 'show version' do |cfg|
+ comment cfg
+ end
+
+ # show flash is not possible on a brocade 6910, do dir instead
+ # to see flash contents (includes config file names)
+ cmd 'dir' do |cfg|
+ comment cfg
+ end
+
+ cmd 'show running-config' do |cfg|
+ arr = cfg.each_line.to_a
+ arr[2..-1].join unless arr.length < 2
+ end
+
+ cfg :telnet do
+ username /^Username:/
+ password /^Password:/
+ end
+
+ # post login and post logout
+ cfg :telnet, :ssh do
+ post_login ''
+ pre_logout 'exit'
+ end
+
+end
diff --git a/lib/oxidized/model/coriant8600.rb b/lib/oxidized/model/coriant8600.rb new file mode 100644 index 0000000..a48ffa5 --- /dev/null +++ b/lib/oxidized/model/coriant8600.rb @@ -0,0 +1,30 @@ +class Coriant8600 < Oxidized::Model + + comment '# ' + + prompt /^[^\s#>]+[#>]$/ + + cmd 'show hw-inventory' do |cfg| + comment cfg + end + + cmd 'show flash' do |cfg| + comment cfg + end + + cmd 'show run' do |cfg| + cfg + end + + cfg :telnet do + username /^user name:$/ + password /^password:$/ + end + + cfg :telnet, :ssh do + pre_logout 'exit' + post_login 'enable' + post_login 'terminal more off' + end + +end diff --git a/lib/oxidized/model/corianttmos.rb b/lib/oxidized/model/corianttmos.rb new file mode 100644 index 0000000..76603f6 --- /dev/null +++ b/lib/oxidized/model/corianttmos.rb @@ -0,0 +1,25 @@ +class CoriantTmos < Oxidized::Model + + comment '# ' + + prompt /^[^\s#]+#\s$/ + + cmd 'show node extensive' do |cfg| + comment cfg + end + + cmd 'show run' do |cfg| + cfg + end + + cfg :telnet do + username /^Login:\s$/ + password /^Password:\s$/ + end + + cfg :telnet, :ssh do + pre_logout 'exit' + post_login 'enable config terminal length 0' + end + +end diff --git a/lib/oxidized/model/cumulus.rb b/lib/oxidized/model/cumulus.rb index 68d856e..dc6792a 100644 --- a/lib/oxidized/model/cumulus.rb +++ b/lib/oxidized/model/cumulus.rb @@ -1,6 +1,6 @@ class Cumulus < Oxidized::Model - prompt /^((\w*)@(.*)([>#]\s)+)$/ + prompt /^((\w*)@(.*)):/ comment '# ' @@ -22,7 +22,7 @@ class Cumulus < Oxidized::Model cfg += cmd 'cat /etc/hosts' cfg += add_comment 'THE INTERFACES' - cfg += cmd 'cat /etc/network/interfaces' + cfg += cmd 'grep -r "" /etc/network/interface* | cut -d "/" -f 4-' cfg += add_comment 'RESOLV.CONF' cfg += cmd 'cat /etc/resolv.conf' @@ -30,6 +30,9 @@ class Cumulus < Oxidized::Model cfg += add_comment 'NTP.CONF' cfg += cmd 'cat /etc/ntp.conf' + cfg += add_comment 'IP Routes' + cfg += cmd 'netstat -rn' + cfg += add_comment 'QUAGGA DAEMONS' cfg += cmd 'cat /etc/quagga/daemons' @@ -55,10 +58,13 @@ class Cumulus < Oxidized::Model cfg += cmd 'cat /etc/cumulus/switchd.conf' cfg += add_comment 'ACL' - cfg += cmd 'iptables -L' + cfg += cmd 'iptables -L -n' cfg += add_comment 'VERSION' cfg += cmd 'cat /etc/cumulus/etc.replace/os-release' + + cfg += add_comment 'License' + cfg += cmd 'cl-license' end @@ -73,4 +79,4 @@ class Cumulus < Oxidized::Model end -end
\ No newline at end of file +end diff --git a/lib/oxidized/model/datacom.rb b/lib/oxidized/model/datacom.rb index 54091ed..5dbc080 100644 --- a/lib/oxidized/model/datacom.rb +++ b/lib/oxidized/model/datacom.rb @@ -24,7 +24,12 @@ class DataCom < Oxidized::Model cfg.cut_head end - cfg :telnet, :ssh do + cfg :ssh do + password /^Password:\s$/ + pre_logout 'exit' + end + + cfg :telnet do username /login:\s$/ password /^Password:\s$/ pre_logout 'exit' diff --git a/lib/oxidized/model/edgeswitch.rb b/lib/oxidized/model/edgeswitch.rb index 7c82639..7f5b1ea 100644 --- a/lib/oxidized/model/edgeswitch.rb +++ b/lib/oxidized/model/edgeswitch.rb @@ -11,8 +11,8 @@ class EdgeSwitch < Oxidized::Model end cfg :telnet do - username /Username:\s/ - password /^Password:\s/ + username /User(name)?:\s?/ + password /^Password:\s?/ end cfg :telnet, :ssh do diff --git a/lib/oxidized/model/eos.rb b/lib/oxidized/model/eos.rb index 84ef8cb..75da0fa 100644 --- a/lib/oxidized/model/eos.rb +++ b/lib/oxidized/model/eos.rb @@ -14,6 +14,7 @@ class EOS < Oxidized::Model cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>' cfg.gsub! /username (\S+) privilege (\d+) (\S+).*/, '<secret hidden>' cfg.gsub! /^(enable secret).*/, '\\1 <configuration removed>' + cfg.gsub! /^(tacacs-server key \d+).*/, '\\1 <configuration removed>' cfg end diff --git a/lib/oxidized/model/fortios.rb b/lib/oxidized/model/fortios.rb index aad3a6e..cd379b7 100644 --- a/lib/oxidized/model/fortios.rb +++ b/lib/oxidized/model/fortios.rb @@ -2,7 +2,7 @@ class FortiOS < Oxidized::Model comment '# ' - prompt /^([-\w\.]+(\s[\(\w\-\.\)]+)?\~?\s?[#>$]\s?)$/ + prompt /^([-\w\.\~]+(\s[\(\w\-\.\)]+)?\~?\s?[#>$]\s?)$/ expect /^--More--\s$/ do |data, re| send ' ' diff --git a/lib/oxidized/model/gaiaos.rb b/lib/oxidized/model/gaiaos.rb new file mode 100644 index 0000000..434e774 --- /dev/null +++ b/lib/oxidized/model/gaiaos.rb @@ -0,0 +1,46 @@ +class GaiaOS < Oxidized::Model + + # CheckPoint - Gaia OS Model + + # Gaia Prompt + prompt /^([\[\]\w.@:-]+[#>]\s?)$/ + + # Comment tag + comment '# ' + + + cmd :all do |cfg| + cfg = cfg.each_line.to_a[1..-2].join + end + + cmd :secret do |cfg| + cfg.gsub! /^(set expert-password-hash ).*/, '\1<EXPERT PASSWORD REMOVED>' + cfg.gsub! /^(set user \S+ password-hash ).*/,'\1<USER PASSWORD REMOVED>' + cfg.gsub! /^(set ospf .* secret ).*/,'\1<OSPF KEY REMOVED>' + cfg.gsub! /^(set snmp community )(.*)( read-only.*)/,'\1<SNMP COMMUNITY REMOVED>\3' + cfg.gsub! /^(add snmp .* community )(.*)(\S?.*)/,'\1<SNMP COMMUNITY REMOVED>\3' + cfg.gsub! /(auth|privacy)(-pass-phrase-hashed )(\S*)/,'\1-pass-phrase-hashed <SNMP PASS-PHRASE REMOVED>' + cfg + end + + cmd 'show asset all' do |cfg| + comment cfg + end + + cmd 'show version all' do |cfg| + comment cfg + end + + cmd 'show configuration' do |cfg| + cfg.gsub! /^# Exported by \S+ on .*/, '# ' + cfg + end + + + cfg :ssh do + # User shell must be /etc/cli.sh + post_login 'set clienv rows 0' + pre_logout 'exit' + end + +end diff --git a/lib/oxidized/model/junos.rb b/lib/oxidized/model/junos.rb index bdd9bed..058e3cf 100644 --- a/lib/oxidized/model/junos.rb +++ b/lib/oxidized/model/junos.rb @@ -7,8 +7,7 @@ class JunOS < Oxidized::Model end cmd :all do |cfg| - # we don't need screen-scraping in ssh due to exec - cfg = cfg.lines.to_a[1..-2].join if telnet + cfg = cfg.lines.to_a[1..-2].join if screenscrape cfg.lines.map { |line| line.rstrip }.join("\n") + "\n" end diff --git a/lib/oxidized/model/model.rb b/lib/oxidized/model/model.rb index 4a15a45..a2a71cb 100644 --- a/lib/oxidized/model/model.rb +++ b/lib/oxidized/model/model.rb @@ -154,6 +154,10 @@ module Oxidized data end + def screenscrape + @input.class.to_s.match(/Telnet/) || vars(:ssh_no_exec) + end + private def process_cmd_output output, name diff --git a/lib/oxidized/model/pfsense.rb b/lib/oxidized/model/pfsense.rb new file mode 100644 index 0000000..9982d72 --- /dev/null +++ b/lib/oxidized/model/pfsense.rb @@ -0,0 +1,18 @@ +class PfSense < Oxidized::Model + + # use other use than 'admin' user, 'admin' user cannot get ssh/exec. See issue #535 + + cmd :all do |cfg| + cfg.each_line.to_a[1..-2].join + end + + cmd 'cat /cf/conf/config.xml' do |cfg| + cfg.gsub! /\s<revision>\s*<time>\d*<\/time>\s*.*\s*.*\s*<\/revision>/, '' + end + + cfg :ssh do + exec true + pre_logout 'exit' + end + +end diff --git a/lib/oxidized/model/procurve.rb b/lib/oxidized/model/procurve.rb index 0dc6f8f..da792e6 100644 --- a/lib/oxidized/model/procurve.rb +++ b/lib/oxidized/model/procurve.rb @@ -11,7 +11,7 @@ class Procurve < Oxidized::Model data.gsub re, '' end - expect /Press any key to continue/ do + expect /Press any key to continue(\e\[\??\d+(;\d+)*[A-Za-z])*$/ do send ' ' "" end diff --git a/lib/oxidized/model/quantaos.rb b/lib/oxidized/model/quantaos.rb new file mode 100644 index 0000000..274440d --- /dev/null +++ b/lib/oxidized/model/quantaos.rb @@ -0,0 +1,35 @@ +class QuantaOS < Oxidized::Model + + prompt /^\((\w|\S)+\) (>|#)$/ + comment '! ' + + cmd 'show run' do |cfg| + cfg.each_line.select do |line| + not line.match /^!.*$/ and + not line.match /^\((\w|\S)+\) (>|#)$/ and + not line.match /^show run$/ + end.join + end + + cfg :telnet do + username /^Username:/ + password /^Password:/ + end + + cfg :telnet, :ssh do + post_login do + send "enable\n" + if vars :enable + cmd vars(:enable) + else + cmd "" + end + end + post_login 'terminal length 0' + pre_logout do + send "quit\n" + send "n\n" + end + end + +end diff --git a/lib/oxidized/model/routeros.rb b/lib/oxidized/model/routeros.rb index 4822500..fc96512 100644 --- a/lib/oxidized/model/routeros.rb +++ b/lib/oxidized/model/routeros.rb @@ -1,5 +1,5 @@ class RouterOS < Oxidized::Model - prompt /\[\w+@\S+\]\s?>\s?$/ + prompt /\[\w+@\S+(\s?\S+)*\]\s?>\s?$/ comment "# " cmd '/system routerboard print' do |cfg| diff --git a/lib/oxidized/model/saos.rb b/lib/oxidized/model/saos.rb index cada35b..5d460cf 100644 --- a/lib/oxidized/model/saos.rb +++ b/lib/oxidized/model/saos.rb @@ -17,8 +17,10 @@ class SAOS < Oxidized::Model username /login:/ password /assword:/ end - cfg :telnet do + + cfg :telnet, :ssh do + post_login 'system shell set more off' post_login 'system shell session set more off' pre_logout 'exit' end -end
\ No newline at end of file +end diff --git a/lib/oxidized/model/screenos.rb b/lib/oxidized/model/screenos.rb index 7ee9d9f..0258898 100644 --- a/lib/oxidized/model/screenos.rb +++ b/lib/oxidized/model/screenos.rb @@ -20,6 +20,7 @@ class ScreenOS < Oxidized::Model cmd 'get system' do |cfg| cfg.gsub! /^Date\ .*\n/, '' cfg.gsub! /^Up\ .*\n/, '' + cfg.gsub! /(current bw ).*/, '\\1 <removed>' comment cfg end diff --git a/lib/oxidized/model/timos.rb b/lib/oxidized/model/timos.rb index dc28580..d40e845 100644 --- a/lib/oxidized/model/timos.rb +++ b/lib/oxidized/model/timos.rb @@ -1,8 +1,10 @@ class TiMOS < Oxidized::Model - # Alcatel-Lucent TiMOS (Timetra) - # used in SR/ESS/SAS routers - + # + # Nokia SR OS (TiMOS) (formerly TiMetra, Alcatel, Alcatel-Lucent). + # Used in 7705 SAR, 7210 SAS, 7450 ESS, 7750 SR, 7950 XRS, and NSP. + # + comment '# ' prompt /^([-\w\.:>\*]+\s?[#>]\s?)$/ @@ -12,26 +14,81 @@ class TiMOS < Oxidized::Model new_cfg << cfg.each_line.to_a[1..-2].join end + # + # Show the boot options file. + # cmd 'show bof' do |cfg| comment cfg end + # + # Show the system information. + # cmd 'show system information' do |cfg| - # strip uptime + # + # Strip uptime. + # cfg.sub! /^System Up Time.*\n/, '' comment cfg end + # + # Show the card state. + # cmd 'show card state' do |cfg| comment cfg end - cmd 'show boot-messages' do |cfg| - cfg.gsub! /\r/, "" + # + # Show the boot log. + # + cmd 'file type bootlog.txt' do |cfg| + # + # Strip carriage returns and backspaces. + # + cfg.gsub! /\r/, '' + cfg.gsub! /[\b][\b][\b]/, "\n" + comment cfg + end + + # + # Show the running debug configuration. + # + cmd 'show debug' do |cfg| comment cfg end - cmd 'admin display-config' + # + # Show the saved debug configuration (admin debug-save). + # + cmd 'file type config.dbg' do |cfg| + # + # Strip carriage returns. + # + cfg.gsub! /\r/, '' + comment cfg + end + + # + # Show the running persistent indices. + # + cmd 'admin display-config index' do |cfg| + # + # Strip carriage returns. + # + cfg.gsub! /\r/, '' + comment cfg + end + + # + # Show the running configuration. + # + cmd 'admin display-config' do |cfg| + # + # Strip carriage returns. + # + cfg.gsub! /\r/, '' + end cfg :telnet do username /^Login: / |