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: / | 
