class Aio::Module::Cmd::Cisco::ShowIpRouteSummary

Public Class Methods

new() click to toggle source
Calls superclass method Aio::Module::Cmd::new
# File lib/modules/cmd/cisco/show_ip_route_summary.rb, line 8
def initialize
  super({
    :cmd_full         => "show ip route summary",
    :cmd_short        => "sh ip rou sum",
    :author                   => "Elin",
    :description      => "This is Cisco Command# show ip route summary",
    :platform         => "all",
    :benchmark        => {}
  })
end

Public Instance Methods

parse() click to toggle source
# File lib/modules/cmd/cisco/show_ip_route_summary.rb, line 19
def parse
  cont = self.context.dup
  summary = {}
  useful[:route_summary] = summary

  cont.readline_match_block(/Route Source Networks Subnets Replicates Overhead/)
  cont.readline_match_block(/connected (?<networks>\d+) (?<subnets>\d+) (?<replicates>\d+)/) do |block|
    summary_conn = {}
    summary[:connected] = summary_conn
    block.update(summary_conn, :networks)
    block.update(summary_conn, :subnets)
    block.update(summary_conn, :replicates)
  end

  cont.readline_match_block(/static (?<networks>\d+) (?<subnets>\d+) (?<replicates>\d+)/) do |block|
    summary_static = {}
    summary[:static] = summary_static
    block.update(summary_static, :networks)
    block.update(summary_static, :subnets)
    block.update(summary_static, :replicates)
  end


    # 有的多一个Replicates,整个数值有可能是5,也有可能是4
  # 但是后面的 Replicates  Overhead    Memory 不做考虑,直接忽略
  cont.readline_match_block_loop(/(?<proto>[^\d\s]+) (?<proto_id>\d+) (?<networks>\d+) (?<subnets>\d+) (?<replicates>\d+) .*/, reg_blank) do |block|
    proto = block[:proto]
    proto_id = block[:proto_id]
    summary_proto = {}
    summary["#{proto}_#{proto_id}".to_sym] = summary_proto
    block.update(summary_proto, :proto, proto)
    block.update(summary_proto, :proto_id)
    block.update(summary_proto, :networks)
    block.update(summary_proto, :subnets)
    block.update(summary_proto, :replicates)
  end
end