Class: Aio::Module::Cmd::Cisco::ShowVersion

Inherits:
Aio::Module::Cmd::Cisco show all
Includes:
Aio::Module
Defined in:
lib/modules/cmd/cisco/show_version.rb

Instance Attribute Summary

Attributes inherited from Aio::Module::Cmd

#cmd_info, #context, #device_info, #ext_info, #useful, #warning_klass

Instance Method Summary collapse

Methods inherited from Aio::Module::Cmd

#author, #benchmark, #clear_useful, #cmd_full, #cmd_short, #description, #division, #key_stand, #license, #platform, #ranking, #set_defaults, #type

Methods included from Ui::Verbose

#clear_line, #print_error, #print_good, #progress_bar

Constructor Details

#initializeShowVersion

Returns a new instance of ShowVersion.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/modules/cmd/cisco/show_version.rb', line 8

def initialize
  super({
    :cmd_full		=> "show version",
    :cmd_short  => "sh ver",
    :author			=> "Elin",
    :description => "This is Cisco Command# show version",
    :ranking 		=> Ranking_1,
    :key_stand	=> true,
    :platform		=> "all",
    :benchmark 	=> {
      :register	=> ["==", "0x2102", "0xF", "0x1", "0x10F"],
    },
    :license		=> Aio::AIO_LICENSE})
end

Instance Method Details

#parseObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/modules/cmd/cisco/show_version.rb', line 23

def parse
  cont = self.context.dup
  soft_info = {}
  useful[:software] = soft_info

  cont.readline_match_block(/Cisco (?<info>.*)/) do |block|
    key_stand_cisco
    case block[:info]
    when /Adaptive Security Appliance/
      ver = /Software Version (?<version>.*)/.match(block[:info])
      block.update(soft_info, :version, ver[:version])
      key_stand_version(ver[:version])
      parse_asa(cont, soft_info)
    else
      parse_def(cont, soft_info)
    end
  end
end

#parse_asa(cont, soft_info) ⇒ Object

ASA 系列



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/modules/cmd/cisco/show_version.rb', line 43

def parse_asa(cont, soft_info)
  cont.readline_match_block(/System image file is "(?<soft_image>)"/) do |block|
    block.update(soft_info, :soft_image)
  end
  cont.readline_match_block(/up (?<uptime>.*)/) do |block|
    block.update(soft_info, :uptime)
  end
  cont.readline_match_block(/failover cluster up (?<uptime_failover>.*)/) do |block|
    block.update(soft_info, :uptime_failover)
  end
  cont.readline_match_block(/Hardware: (?<device_model>.[^,]+),/) do |block|
    block.update(soft_info, :device_model)
    key_stand_model(block[:device_model])
    key_stand_template Template_3		# 当是asa时使用模板3
  end
  cont.readline_match_block(/Serial Number: (?<sn>.*)/) do |block|
    block.update(soft_info, :sn)
  end
end

#parse_def(cont, soft_info) ⇒ Object

包括了一般的以及 7600 系列



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/modules/cmd/cisco/show_version.rb', line 64

def parse_def(cont, soft_info)
  cont.readline_match_block(/Version (?<version>.*),/) do |block|
    block.update(soft_info, :version)
    key_stand_version(block[:version])
  end
  cont.readline_match_block(/(?<device_name>.*) uptime is (?<uptime>.*)/) do |block|
    block.update(soft_info, :device_name)
    block.update(soft_info, :uptime)
  end
  cont.readline_match_block(/System image file is "(?<soft_image>.*)"/) do |block|
    block.update(soft_info, :soft_image)
  end
  cont.readline_match_block(//)
  cont.readline_match_block(/^[Cc]isco (?<device_model>[^\s]+)/) do |block|
    block.update(soft_info, :device_model)
    key_stand_model(block[:device_model])
    case block[:device_model]
    when /76|65/	# 当是7600的时候,使用模板2
      key_stand_template Template_2
    when /28/ # 当是2800的时候,使用模板4
      key_stand_template Template_4
    else
      key_stand_template Template_1
    end
  end
  cont.readline_match_block(/Processor board ID (?<board_id>.*)/) do |block|
    block.update(soft_info, :board_id)
  end
  cont.readline_match_block(/Configuration register is (?<register>.*)/) do |block|
    block.warning_serious(soft_info, :register, self)
  end
end