diff options
Diffstat (limited to 'lib/oxidized/model')
-rw-r--r-- | lib/oxidized/model/asa.rb | 2 | ||||
-rw-r--r-- | lib/oxidized/model/eos.rb | 8 | ||||
-rw-r--r-- | lib/oxidized/model/junos.rb | 2 | ||||
-rw-r--r-- | lib/oxidized/model/powerconnect.rb | 27 | ||||
-rw-r--r-- | lib/oxidized/model/routeros.rb | 17 |
5 files changed, 48 insertions, 8 deletions
diff --git a/lib/oxidized/model/asa.rb b/lib/oxidized/model/asa.rb index 8335b1d..d257e9e 100644 --- a/lib/oxidized/model/asa.rb +++ b/lib/oxidized/model/asa.rb @@ -23,7 +23,7 @@ class ASA < Oxidized::Model comment cfg end - cmd 'show running-config' do |cfg| + cmd 'more system:running-config' do |cfg| cfg = cfg.each_line.to_a[3..-1].join cfg.gsub! /^: [^\n]*\n/, '' cfg diff --git a/lib/oxidized/model/eos.rb b/lib/oxidized/model/eos.rb index 58bb5a9..84ef8cb 100644 --- a/lib/oxidized/model/eos.rb +++ b/lib/oxidized/model/eos.rb @@ -29,8 +29,11 @@ class EOS < Oxidized::Model if vars :enable post_login do send "enable\n" - expect /[pP]assword:\s?$/ - send vars(:enable) + "\n" + # Interpret enable: true as meaning we won't be prompted for a password + unless vars(:enable).is_a? TrueClass + expect /[pP]assword:\s?$/ + send vars(:enable) + "\n" + end expect /^.+[#>]\s?$/ end post_login 'terminal length 0' @@ -39,4 +42,3 @@ class EOS < Oxidized::Model end end - diff --git a/lib/oxidized/model/junos.rb b/lib/oxidized/model/junos.rb index 70f0956..e43d71a 100644 --- a/lib/oxidized/model/junos.rb +++ b/lib/oxidized/model/junos.rb @@ -9,7 +9,7 @@ class JunOS < Oxidized::Model 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.map { |line| line.rstrip }.join "\n" end cmd :secret do |cfg| diff --git a/lib/oxidized/model/powerconnect.rb b/lib/oxidized/model/powerconnect.rb index a1fe229..531ad0b 100644 --- a/lib/oxidized/model/powerconnect.rb +++ b/lib/oxidized/model/powerconnect.rb @@ -19,9 +19,8 @@ class PowerConnect < Oxidized::Model end cmd 'show system' do |cfg| - cfg = cfg.split("\n").select { |line| not line[/Up\sTime/] } - cfg = cfg[0..-28]<<" " - comment cfg.join("\n") + @model = $1 if cfg.match /Power[C|c]onnect (\d{4})[P|F]?/ + clean cfg end cmd 'show running-config' @@ -39,9 +38,31 @@ class PowerConnect < Oxidized::Model end end + post_login "terminal datadump" post_login "terminal length 0" pre_logout "logout" + pre_logout "exit" end + def clean cfg + out = [] + skip_block = false + cfg.each_line do |line| + if line.match /Up\sTime|Temperature|Power Supplies/i + # For 34xx, 54xx, 55xx, and 8024F we should skip this block (terminated by a blank line) + skip_block = true if @model =~ /^(34|35)(24|48)$|^(54|55)(24|48)$|^8024$/ + end + # If we have lines to skip do this until we reach and empty line + if skip_block + skip_block = false if /\S/ !~ line + next + end + out << line.strip + end + out = comment out.join "\n" + out << "\n" + end + + end diff --git a/lib/oxidized/model/routeros.rb b/lib/oxidized/model/routeros.rb new file mode 100644 index 0000000..bd588b7 --- /dev/null +++ b/lib/oxidized/model/routeros.rb @@ -0,0 +1,17 @@ +class RouterOS < Oxidized::Model + prompt /^\[\w+@\S+\]\s?>\s?$/ + comment "# " + + cmd '/system routerboard print' do |cfg| + comment cfg + end + + cmd '/export' do |cfg| + cfg = cfg.split("\n").select { |line| not line[/^\#\s\w{3}\/\d{2}\/\d{4}.*$/] } + cfg.join("\n") + "\n" + end + + cfg :ssh do + exec true + end +end |