From 7c42c2891e7da0432c805e95678934e5a63770cd Mon Sep 17 00:00:00 2001 From: Alexander Schaber Date: Tue, 7 Feb 2017 13:45:32 +0100 Subject: add support for netgear switch --- lib/oxidized/model/netgear.rb | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/oxidized/model/netgear.rb (limited to 'lib') diff --git a/lib/oxidized/model/netgear.rb b/lib/oxidized/model/netgear.rb new file mode 100644 index 0000000..47e00b1 --- /dev/null +++ b/lib/oxidized/model/netgear.rb @@ -0,0 +1,37 @@ +class Netgear < Oxidized::Model + + comment '!' + prompt /^(\([\w-]+\)\s[#>])$/ + + expect /^--More-- or \(q\)uit/ do |data, re| + send ' ' + data.sub re, '' + end + + cmd :secret do |cfg| + cfg.gsub!(/password (\S+)/, 'password ') + cfg + end + + cfg :ssh do + if vars :enable + post_login do + send "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 /^.+[#]$/ + end + end + pre_logout 'exit' + pre_logout 'quit' + end + + cmd 'show running-config' do |cfg| + cfg.gsub! /^(!.*Time).*$/, '\1' + end + +end + -- cgit v1.2.1 From da074381e4b998270e0886152446de7945ba120e Mon Sep 17 00:00:00 2001 From: Robert Drake Date: Thu, 23 Mar 2017 22:49:23 -0400 Subject: Adding support for more "show version" commands This is a port of some of the rancid "show version" parsing. I tried to simplify it from the way rancid does it, so it doesn't attempt to guess the device type, but it does provide IOS version and the type of processor. --- lib/oxidized/model/ios.rb | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/oxidized/model/ios.rb b/lib/oxidized/model/ios.rb index 94a3ab0..d155aa6 100644 --- a/lib/oxidized/model/ios.rb +++ b/lib/oxidized/model/ios.rb @@ -19,6 +19,8 @@ class IOS < Oxidized::Model cmd :all do |cfg| #cfg.gsub! /\cH+\s{8}/, '' # example how to handle pager #cfg.gsub! /\cH+/, '' # example how to handle pager + # get rid of errors for commands that don't work on some devices + cfg.gsub! /^ % Invalid input detected at '\^' marker\./, '' cfg.each_line.to_a[1..-2].join end @@ -36,7 +38,42 @@ class IOS < Oxidized::Model end cmd 'show version' do |cfg| - comment cfg.lines.first + comments = [] + comments << cfg.lines.first + lines = cfg.lines + lines.each_with_index do |line,i| + slave = '' + slaveslot = '' + + if line.match /^Slave in slot (\d+) is running/ + slave = " Slave:"; + slaveslot = ", slot #{$1}"; + end + + if line.match /(\S+(?:\sseries)?)\s+(?:\((\S+)\)\s+processor|\(revision[^)]+\)).*\s+with (\S+k) bytes/i + sproc = $1 + cpu = $2 + mem = $3 + cpuxtra = '' + comments << "Chassis type:#{slave} #{sproc}"; + comments << "Memory:#{slave} main #{mem}"; + # check the next two lines for more CPU info + if cfg.lines[i+1].match /processor board id (\S+)/i + comments << "Processor ID: #{$1}"; + end + if cfg.lines[i+2].match /(cpu at |processor: |#{cpu} processor,)/i + # change implementation to impl and prepend comma + cpuxtra = cfg.lines[i+2].gsub(/implementation/,'impl').gsub(/^/,', ').chomp; + end + comments << "CPU:#{slave} #{cpu}#{cpuxtra}#{slaveslot}"; + end + + if line.match /^System image file is "([^\"]*)"$/ + comments << "Image: #{$1}" + end + end + comments << "\n" + comment comments.join "\n" end cmd 'show inventory' do |cfg| -- cgit v1.2.1 From f63cb61550cd2401c32a42d36cf07f5243c788c1 Mon Sep 17 00:00:00 2001 From: nesteffe Date: Tue, 28 Mar 2017 11:07:53 -0500 Subject: Remove single line 'Up Time' lines from show system --- lib/oxidized/model/powerconnect.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'lib') diff --git a/lib/oxidized/model/powerconnect.rb b/lib/oxidized/model/powerconnect.rb index ac36c26..618f05a 100644 --- a/lib/oxidized/model/powerconnect.rb +++ b/lib/oxidized/model/powerconnect.rb @@ -67,6 +67,7 @@ class PowerConnect < Oxidized::Model end out << line.strip end + out = out.select { |line| not line[/Up\sTime/] } out = comment out.join "\n" out << "\n" end -- cgit v1.2.1 From 0a6cbe3d10dd6d78cf8ec93ad66ebd69e0780946 Mon Sep 17 00:00:00 2001 From: Robert Drake Date: Fri, 24 Mar 2017 16:46:21 -0400 Subject: added support for VTP --- lib/oxidized/model/ios.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib') diff --git a/lib/oxidized/model/ios.rb b/lib/oxidized/model/ios.rb index d155aa6..a522257 100644 --- a/lib/oxidized/model/ios.rb +++ b/lib/oxidized/model/ios.rb @@ -76,6 +76,12 @@ class IOS < Oxidized::Model comment comments.join "\n" end + cmd 'show vtp status' do |cfg| + cfg.gsub! /^$\n/, '' + cfg.gsub! /^/, 'VTP: ' if (!cfg.empty?) + comment "#{cfg}\n" + end + cmd 'show inventory' do |cfg| comment cfg end -- cgit v1.2.1 From 49b4087297a528cfd5e5f1a0c88fccab7695ad8e Mon Sep 17 00:00:00 2001 From: Robert Drake Date: Fri, 24 Mar 2017 21:59:19 -0400 Subject: whitespace cleanup / fixing invalid command --- lib/oxidized/model/ios.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/oxidized/model/ios.rb b/lib/oxidized/model/ios.rb index a522257..afd419e 100644 --- a/lib/oxidized/model/ios.rb +++ b/lib/oxidized/model/ios.rb @@ -20,7 +20,7 @@ class IOS < Oxidized::Model #cfg.gsub! /\cH+\s{8}/, '' # example how to handle pager #cfg.gsub! /\cH+/, '' # example how to handle pager # get rid of errors for commands that don't work on some devices - cfg.gsub! /^ % Invalid input detected at '\^' marker\./, '' + cfg.gsub! /^% Invalid input detected at '\^' marker\.$|^\s+\^$/, '' cfg.each_line.to_a[1..-2].join end @@ -59,11 +59,11 @@ class IOS < Oxidized::Model comments << "Memory:#{slave} main #{mem}"; # check the next two lines for more CPU info if cfg.lines[i+1].match /processor board id (\S+)/i - comments << "Processor ID: #{$1}"; + comments << "Processor ID: #{$1}"; end if cfg.lines[i+2].match /(cpu at |processor: |#{cpu} processor,)/i - # change implementation to impl and prepend comma - cpuxtra = cfg.lines[i+2].gsub(/implementation/,'impl').gsub(/^/,', ').chomp; + # change implementation to impl and prepend comma + cpuxtra = cfg.lines[i+2].gsub(/implementation/,'impl').gsub(/^/,', ').chomp; end comments << "CPU:#{slave} #{cpu}#{cpuxtra}#{slaveslot}"; end -- cgit v1.2.1 From ce3461f0801cdb6829637646eecd4c87e2d9a9a8 Mon Sep 17 00:00:00 2001 From: Robert Drake Date: Fri, 24 Mar 2017 22:00:08 -0400 Subject: more "show version" additions --- lib/oxidized/model/ios.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'lib') diff --git a/lib/oxidized/model/ios.rb b/lib/oxidized/model/ios.rb index afd419e..0596f90 100644 --- a/lib/oxidized/model/ios.rb +++ b/lib/oxidized/model/ios.rb @@ -50,6 +50,34 @@ class IOS < Oxidized::Model slaveslot = ", slot #{$1}"; end + if line.match /^Compiled (.*)$/ + comments << "Image:#{slave} Compiled: #{$1}" + end + + if line.match /^(?:Cisco )?IOS .* Software,? \(([A-Za-z0-9_-]*)\), .*Version\s+(.*)$/ + comments << "Image:#{slave} Software: #{$1}, #{$2}" + end + + if line.match /^ROM: (IOS \S+ )?(System )?Bootstrap.*(Version.*)$/ + comments << "ROM Bootstrap: #{$3}" + end + + if line.match /^BOOTFLASH: .*(Version.*)$/ + comments << "BOOTFLASH: #{$1}" + end + + if line.match /^(\d+[kK]) bytes of (non-volatile|NVRAM)/ + comments << "Memory: nvram #{$1}" + end + + if line.match /^(\d+[kK]) bytes of (flash memory|flash internal|processor board System flash|ATA CompactFlash)/i + comments << "Memory: flash #{$1}" + end + + if line.match (/^(\d+[kK]) bytes of (Flash|ATA)?.*PCMCIA .*(slot|disk) ?(\d)/i) + comments << "Memory: pcmcia #{$2} #{$3}#{$4} #{$1}"; + end + if line.match /(\S+(?:\sseries)?)\s+(?:\((\S+)\)\s+processor|\(revision[^)]+\)).*\s+with (\S+k) bytes/i sproc = $1 cpu = $2 -- cgit v1.2.1 From e3f1cc86a6240f848eb3fa24e0dba151b42c88be Mon Sep 17 00:00:00 2001 From: Sten Spans Date: Wed, 5 Apr 2017 09:53:07 +0200 Subject: Update slackdiff.rb Add proxy option to slackdiff hook --- lib/oxidized/hook/slackdiff.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/oxidized/hook/slackdiff.rb b/lib/oxidized/hook/slackdiff.rb index b37c9c4..61f1743 100644 --- a/lib/oxidized/hook/slackdiff.rb +++ b/lib/oxidized/hook/slackdiff.rb @@ -10,7 +10,11 @@ class SlackDiff < Oxidized::Hook if ctx.node if ctx.event.to_s == "post_store" log "Connecting to slack" - client = Slack::Client.new token: cfg.token + Slack.configure do |config| + config.token = cfg.token + config.proxy = cfg.proxy if cfg.has_key?('proxy') + end + client = Slack::Client.new client.auth_test log "Connected" gitoutput = ctx.node.output.new -- cgit v1.2.1 From 5c5a7244ed085235bddee0e34251dcc4537fd680 Mon Sep 17 00:00:00 2001 From: "David R. Bild" Date: Thu, 6 Apr 2017 18:23:32 -0500 Subject: Fixed IOS model to redact only secrets The secrets configuration for IOS would the full contents of any line containing a secret. Instead, just redact the secret, keeping the rest of line instact for "enable secret 5 SeCre7" was replaced by "