diff options
author | Robert Drake <rfdrake@users.noreply.github.com> | 2017-03-23 22:49:23 -0400 |
---|---|---|
committer | Robert Drake <rfdrake@users.noreply.github.com> | 2017-03-23 22:49:23 -0400 |
commit | da074381e4b998270e0886152446de7945ba120e (patch) | |
tree | d8740d07d4e22e4cb2d9e29f756f9800983d4da5 /lib/oxidized | |
parent | 4a67e27742c0ab8ed6cd8421d34c01c0de588705 (diff) |
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.
Diffstat (limited to 'lib/oxidized')
-rw-r--r-- | lib/oxidized/model/ios.rb | 39 |
1 files changed, 38 insertions, 1 deletions
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| |