aio_elin 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +675 -0
- data/README.md +9 -0
- data/config.rb +39 -0
- data/lib/aio/base/debug.rb +30 -0
- data/lib/aio/base/toolkit/array.rb +24 -0
- data/lib/aio/base/toolkit/date.rb +46 -0
- data/lib/aio/base/toolkit/deep_clone.rb +10 -0
- data/lib/aio/base/toolkit/diff.rb +104 -0
- data/lib/aio/base/toolkit/excel_office.rb +421 -0
- data/lib/aio/base/toolkit/excel_wps.rb +437 -0
- data/lib/aio/base/toolkit/excel_wps.rb.bak +299 -0
- data/lib/aio/base/toolkit/ipaddr.rb +28 -0
- data/lib/aio/base/toolkit/os.rb +26 -0
- data/lib/aio/base/toolkit/regexp.rb +32 -0
- data/lib/aio/base/toolkit/string.rb +28 -0
- data/lib/aio/base/toolkit/table.rb +441 -0
- data/lib/aio/base/toolkit/test_diff.rb +9 -0
- data/lib/aio/base/toolkit/test_excel.rb +118 -0
- data/lib/aio/base/toolkit/test_word.rb +58 -0
- data/lib/aio/base/toolkit/word_wps.rb +492 -0
- data/lib/aio/base/toolkit.rb +18 -0
- data/lib/aio/base.rb +10 -0
- data/lib/aio/core/device/cisco.rb +13 -0
- data/lib/aio/core/device/cmd_switch.rb +113 -0
- data/lib/aio/core/device/h3c.rb +12 -0
- data/lib/aio/core/device/huawei.rb +10 -0
- data/lib/aio/core/device/juniper.rb +10 -0
- data/lib/aio/core/device/maipu.rb +11 -0
- data/lib/aio/core/device/methods.rb +233 -0
- data/lib/aio/core/device/methods.rb.bak +199 -0
- data/lib/aio/core/device/parent_device.rb +275 -0
- data/lib/aio/core/device.rb +15 -0
- data/lib/aio/core/device_manager.rb +207 -0
- data/lib/aio/core/module/cmd.rb +160 -0
- data/lib/aio/core/module/description.rb +67 -0
- data/lib/aio/core/module/input_style.rb +98 -0
- data/lib/aio/core/module/output_style.rb +80 -0
- data/lib/aio/core/module/platform.rb +30 -0
- data/lib/aio/core/module/ranking.rb +24 -0
- data/lib/aio/core/module/special_style.rb +30 -0
- data/lib/aio/core/module/template.rb +13 -0
- data/lib/aio/core/module.rb +15 -0
- data/lib/aio/core/module_loader.rb +161 -0
- data/lib/aio/core/module_loader.rb.bak +148 -0
- data/lib/aio/core/module_manager.rb +112 -0
- data/lib/aio/core/module_manager.rb.bak +78 -0
- data/lib/aio/core/parse/file.rb +19 -0
- data/lib/aio/core/parse/parser.rb +91 -0
- data/lib/aio/core/parse/parser_machine/bak/has_cmd_state.rb +14 -0
- data/lib/aio/core/parse/parser_machine/bak/has_context_state.rb +11 -0
- data/lib/aio/core/parse/parser_machine/bak/no_cmd_state.rb +11 -0
- data/lib/aio/core/parse/parser_machine/bak/no_context_state.rb +11 -0
- data/lib/aio/core/parse/parser_machine/full_state.rb +12 -0
- data/lib/aio/core/parse/parser_machine/has_device_state.rb +44 -0
- data/lib/aio/core/parse/parser_machine/no_device_state.rb +12 -0
- data/lib/aio/core/parse/parser_machine/parent_state.rb +26 -0
- data/lib/aio/core/parse/parser_machine.rb +47 -0
- data/lib/aio/core/parse.rb +6 -0
- data/lib/aio/core/text/context.rb +211 -0
- data/lib/aio/core/text/line_string.rb +74 -0
- data/lib/aio/core/text/warning.rb +179 -0
- data/lib/aio/core/text.rb +7 -0
- data/lib/aio/core/warning/description.rb +47 -0
- data/lib/aio/core/warning/warning_summarize.rb +232 -0
- data/lib/aio/core/warning.rb +6 -0
- data/lib/aio/core.rb +32 -0
- data/lib/aio/license.rb +687 -0
- data/lib/aio/resource/cover_picture.png +0 -0
- data/lib/aio/resource/line.png +0 -0
- data/lib/aio/resource/logo.png +0 -0
- data/lib/aio/ui/banner.rb +85 -0
- data/lib/aio/ui/readable_text.rb +75 -0
- data/lib/aio/ui/verbose.rb +29 -0
- data/lib/aio/ui/version.rb +9 -0
- data/lib/aio/ui.rb +138 -0
- data/lib/aio.rb +13 -0
- data/lib/modules/cmd/cisco/show_clock.rb +32 -0
- data/lib/modules/cmd/cisco/show_cpu.rb +32 -0
- data/lib/modules/cmd/cisco/show_env.rb +71 -0
- data/lib/modules/cmd/cisco/show_failover.rb +39 -0
- data/lib/modules/cmd/cisco/show_interface_ip_brief.rb +24 -0
- data/lib/modules/cmd/cisco/show_interfaces.rb +177 -0
- data/lib/modules/cmd/cisco/show_inv.rb +43 -0
- data/lib/modules/cmd/cisco/show_ip_interface_brief.rb +42 -0
- data/lib/modules/cmd/cisco/show_ip_ospf_nei.rb +38 -0
- data/lib/modules/cmd/cisco/show_ip_route_summary.rb +81 -0
- data/lib/modules/cmd/cisco/show_memory.rb +27 -0
- data/lib/modules/cmd/cisco/show_process_cpu.rb +35 -0
- data/lib/modules/cmd/cisco/show_process_memory.rb +63 -0
- data/lib/modules/cmd/cisco/show_version.rb +97 -0
- data/lib/modules/cmd/h3c/display_clock.rb +32 -0
- data/lib/modules/cmd/h3c/display_cpu.rb +51 -0
- data/lib/modules/cmd/h3c/display_device_manuinfo.rb +45 -0
- data/lib/modules/cmd/h3c/display_fan.rb +91 -0
- data/lib/modules/cmd/h3c/display_interface.rb +203 -0
- data/lib/modules/cmd/h3c/display_ip_interface_brief.rb +34 -0
- data/lib/modules/cmd/h3c/display_ip_routing.rb +68 -0
- data/lib/modules/cmd/h3c/display_ip_routing_stat.rb +90 -0
- data/lib/modules/cmd/h3c/display_memory.rb +35 -0
- data/lib/modules/cmd/h3c/display_ospf_peer.rb +38 -0
- data/lib/modules/cmd/h3c/display_power.rb +90 -0
- data/lib/modules/cmd/h3c/display_version.rb +54 -0
- data/lib/modules/cmd/h3c/display_vrrp_verbose.rb +86 -0
- data/lib/modules/cmd/maipu/show_env.rb +34 -0
- data/lib/modules/cmd/maipu/show_ip_route.rb +74 -0
- data/lib/modules/cmd/maipu/show_ip_route_statistic.rb +36 -0
- data/lib/modules/cmd/maipu/show_memory.rb +31 -0
- data/lib/modules/cmd/maipu/show_system_fan.rb +66 -0
- data/lib/modules/cmd/maipu/show_system_power.rb +66 -0
- data/lib/modules/cmd/maipu/show_version.rb +50 -0
- data/lib/modules/description/style/crc.rb +22 -0
- data/lib/modules/description/style/input_errors.rb +22 -0
- data/lib/modules/description/style/overrun.rb +22 -0
- data/lib/modules/description/style/proc_ratio.rb +22 -0
- data/lib/modules/description/style/protocol.rb +22 -0
- data/lib/modules/description/style/register.rb +22 -0
- data/lib/modules/description/style/runts.rb +22 -0
- data/lib/modules/description/style/template.rb +22 -0
- data/lib/modules/description/style/total_output_drops.rb +22 -0
- data/lib/modules/input/style/compare_xml.rb +89 -0
- data/lib/modules/input/style/console.rb +222 -0
- data/lib/modules/input/style/console.rb.bak +114 -0
- data/lib/modules/input/style/xinhua_nat.rb +70 -0
- data/lib/modules/output/style/boc_day.rb +223 -0
- data/lib/modules/output/style/cmds.rb +77 -0
- data/lib/modules/output/style/compare_json.rb +26 -0
- data/lib/modules/output/style/compare_report.rb +31 -0
- data/lib/modules/output/style/compare_xml.rb +86 -0
- data/lib/modules/output/style/excel_table_office.rb +407 -0
- data/lib/modules/output/style/excel_table_wps.rb +400 -0
- data/lib/modules/output/style/summary_report.rb +563 -0
- data/lib/modules/special/style/compare.rb +110 -0
- metadata +176 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::H3C::DisplayVersion < Aio::Module::Cmd::H3C
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "display version",
|
11
|
+
:cmd_short => "dis ver",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is H3C Command# display version",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:key_stand => true,
|
16
|
+
:platform => "route",
|
17
|
+
:benchmark => {
|
18
|
+
}
|
19
|
+
})
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse
|
23
|
+
cont = self.context.dup
|
24
|
+
soft_info = {}
|
25
|
+
useful[:software] = soft_info
|
26
|
+
cont.readline_match_block(/(?<device_type>H3C) Comware Platform Software/) do |block|
|
27
|
+
key_stand_h3c
|
28
|
+
end
|
29
|
+
cont.readline_match_block(/Comware Software, Version (?<version>.*)/) do |block|
|
30
|
+
block.update(soft_info, :version)
|
31
|
+
key_stand_version(block[:version])
|
32
|
+
end
|
33
|
+
cont.readline_match_block(/.*/)
|
34
|
+
cont.readline_match_block(/H3C (?<device_model>.*) uptime is (?<uptime>.*)/) do |block|
|
35
|
+
block.update(soft_info, :device_model)
|
36
|
+
block.update(soft_info, :uptime)
|
37
|
+
key_stand_model(block[:device_model])
|
38
|
+
case block[:device_model]
|
39
|
+
when /3600|8800/ # 当是S3600,S5500,S8800 的时候
|
40
|
+
key_stand_template Template_2
|
41
|
+
else
|
42
|
+
key_stand_template Template_1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
cont.readline_match_block_loop(/\[SubSlot (?<slot_id>\d)\](?<slot>.*)/, reg_blank) do |block|
|
47
|
+
next if block[:slot] =~ /No/
|
48
|
+
slot_id = block[:slot_id].to_i
|
49
|
+
block.update_hash(soft_info, :slot, "slot_#{slot_id}", block[:slot])
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::H3C::DisplayVrrpVerbose < Aio::Module::Cmd::H3C
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "display vrrp verbose",
|
11
|
+
:cmd_short => "dis vrrp ver",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is H3C Command# display vrrp verbose",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:platform => "all",
|
16
|
+
:benchmark => {},
|
17
|
+
})
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse
|
21
|
+
cont = self.context.dup
|
22
|
+
vrrp = {}
|
23
|
+
useful[:vrrp] = vrrp
|
24
|
+
cont.readline_match_block(/Run Mode : (?<run_mode>.*)/) do |block|
|
25
|
+
block.update(vrrp, :run_mode)
|
26
|
+
end
|
27
|
+
cont.readline_match_block(/Run Method : (?<run_method>.*)/) do |block|
|
28
|
+
block.update(vrrp, :run_method)
|
29
|
+
end
|
30
|
+
cont.readline_match_block(/Total number of virtual routers : (?<total_number_vrrp>\d+)/) do |block|
|
31
|
+
block.update(vrrp, :total_number_vrrp)
|
32
|
+
end
|
33
|
+
cont.readline_range(/Interface/, /Interface/) do |cont_layer|
|
34
|
+
parse_vrrp(cont_layer)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def parse_vrrp(cont)
|
39
|
+
vrrp = {}
|
40
|
+
useful[:vrrp][:vrid] = {}
|
41
|
+
iface_id = nil
|
42
|
+
|
43
|
+
case device_template
|
44
|
+
when Template_1
|
45
|
+
cont.readline_match_block(/Interface (?<iface_id>.*)/) do |block|
|
46
|
+
iface_id = block[:iface_id]
|
47
|
+
end
|
48
|
+
when Template_2
|
49
|
+
cont.readline_match_block(/Interface : (?<iface_id>.[^\s]+)/) do |block|
|
50
|
+
iface_id = block[:iface_id]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
cont.readline_match_block(/VRID : (?<vrid>\d+)/) do |block|
|
55
|
+
vrid = block[:vrid]
|
56
|
+
useful[:vrrp][:vrid][vrid] = vrrp
|
57
|
+
block.update(vrrp, :interface, iface_id)
|
58
|
+
block.update(vrrp, :vrid)
|
59
|
+
end
|
60
|
+
cont.readline_match_block(/Admin Status : (?<status>.*) State : (?<state>.*)/) do |block|
|
61
|
+
block.update(vrrp, :status)
|
62
|
+
block.update(vrrp, :state)
|
63
|
+
end
|
64
|
+
cont.readline_match_block(/Config Pri : (?<config_pri>.*) Running Pri : (?<running_pri>.*)/) do |block|
|
65
|
+
block.update(vrrp, :config_pri)
|
66
|
+
block.update(vrrp, :running_pri)
|
67
|
+
end
|
68
|
+
cont.readline_match_block(/Preempt Mode : (?<preempt_mode>.*) Delay Time : (?<delay_time>\d+)/) do |block|
|
69
|
+
block.update(vrrp, :preempt_mode)
|
70
|
+
block.update(vrrp, :delay_time)
|
71
|
+
end
|
72
|
+
cont.readline_match_block(/Auth Type : (?<auth_type>.*)/) do |block|
|
73
|
+
block.update(vrrp, :auth_type)
|
74
|
+
end
|
75
|
+
cont.readline_match_block(/Virtual IP : (?<virtual_ip>.*)/) do |block|
|
76
|
+
block.update(vrrp, :virtual_ip)
|
77
|
+
end
|
78
|
+
cont.readline_match_block(/Virtual MAC : (?<virtual_mac>.*)/) do |block|
|
79
|
+
block.update(vrrp, :virtual_mac)
|
80
|
+
end
|
81
|
+
cont.readline_match_block(/Master IP : (?<master_ip>.*)/) do |block|
|
82
|
+
block.update(vrrp, :master_ip)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::Maipu::ShowEnv < Aio::Module::Cmd::Maipu
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "show environment",
|
11
|
+
:cmd_short => "sh env",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is Maipu Command# show environment",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:platform => "all",
|
16
|
+
:benchmark => {
|
17
|
+
:cpu_temperature => ["<", 70],
|
18
|
+
:mainboard_temperature => ["<", 70],
|
19
|
+
}
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
def parse
|
24
|
+
cont = self.context.dup
|
25
|
+
env = {}
|
26
|
+
useful[:env] = env
|
27
|
+
context.readline_match_block(/CPU Temperature is (?<cpu_temperature>\d+)/) do |block|
|
28
|
+
block.warning_serious(env, :cpu_temperature, self)
|
29
|
+
end
|
30
|
+
context.readline_match_block(/MainBoard Temperature is (?<mainboard_temperature>\d+)/) do |block|
|
31
|
+
block.warning_serious(env, :mainboard_temperature, self)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::Maipu::ShowIpRoute < Aio::Module::Cmd::Maipu
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "show ip route",
|
11
|
+
:cmd_short => "sh ip rou",
|
12
|
+
:author => "Elin",
|
13
|
+
:ranking => Ranking_2,
|
14
|
+
:description => "This is Maipu Command# show ip route",
|
15
|
+
:platform => "all",
|
16
|
+
:benchmark => {}
|
17
|
+
})
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse
|
21
|
+
cont = self.context.dup
|
22
|
+
routing = {}
|
23
|
+
useful[:routing] = routing
|
24
|
+
|
25
|
+
cont.readline_match_block(reg_blank) {|b|b}
|
26
|
+
cont.readline_match_block(reg_blank) {|b|b}
|
27
|
+
|
28
|
+
cont.readline_range_if_loop(/^\w/, /^\s+/) do |cont_layer|
|
29
|
+
parse_routing(cont_layer)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def parse_routing(context)
|
34
|
+
|
35
|
+
router = nil
|
36
|
+
|
37
|
+
if context[0] =~ /^C/
|
38
|
+
context.readline_match_block(/C (?<dest>.*) is directly connected, .*, (?<iface>.*)/) do |block|
|
39
|
+
route = {}
|
40
|
+
router = block[:dest]
|
41
|
+
useful[:routing][router] = {}
|
42
|
+
useful[:routing][router][:first] = route
|
43
|
+
block.update(useful[:routing][router], :dest)
|
44
|
+
block.update(route, :proto, "C")
|
45
|
+
block.update(route, :iface)
|
46
|
+
end
|
47
|
+
return
|
48
|
+
end
|
49
|
+
|
50
|
+
context.readline_match_block(/(?<proto>.*) (?<dest>.*) \[(?<metric>\d+)\/(?<ad>\d+)\] via (?<next_hop>.*), (?<time>.*), (?<iface>.*)/) do |block|
|
51
|
+
route = {}
|
52
|
+
router = block[:dest]
|
53
|
+
useful[:routing][router] = {}
|
54
|
+
useful[:routing][router][:first] = route
|
55
|
+
block.update(useful[:routing][router], :dest)
|
56
|
+
block.update(route, :proto)
|
57
|
+
block.update(route, :metric)
|
58
|
+
block.update(route, :ad)
|
59
|
+
block.update(route, :next_hop)
|
60
|
+
block.update(route, :iface)
|
61
|
+
end
|
62
|
+
|
63
|
+
if context.size == 2
|
64
|
+
context.readline_match_block(/\[(?<metric>\d+)\/(?<ad>\d+)\] via (?<next_hop>.*), (?<time>.*), (?<iface>.*)/) do |block|
|
65
|
+
route = {}
|
66
|
+
useful[:routing][router][:secend] = route
|
67
|
+
block.update(route, :metric)
|
68
|
+
block.update(route, :ad)
|
69
|
+
block.update(route, :next_hop)
|
70
|
+
block.update(route, :iface)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::Maipu::ShowIpRouteStat < Aio::Module::Cmd::Maipu
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "show ip route statistic",
|
11
|
+
:cmd_short => "sh ip rou stat",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is Maipu Command# show ip route statistic",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:platform => "all",
|
16
|
+
:benchmark => {}
|
17
|
+
})
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse
|
21
|
+
cont = self.context.dup
|
22
|
+
stat = {}
|
23
|
+
useful[:route_summary] = stat
|
24
|
+
|
25
|
+
cont.readline_match_block(/Statistics for the route/) {|b|b}
|
26
|
+
|
27
|
+
cont.readline_match_block_loop(/(?<proto>[^s]+) (?<count>\d+)/, reg_blank) do |block|
|
28
|
+
route = {}
|
29
|
+
proto = block[:proto].strip
|
30
|
+
useful[:route_summary][proto.to_sym] = route
|
31
|
+
block.update(route, :proto)
|
32
|
+
block.update(route, :count)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::Maipu::ShowMemory < Aio::Module::Cmd::Maipu
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "show memory",
|
11
|
+
:cmd_short => "sh mem",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is Maipu Command# show memory",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:platform => "all",
|
16
|
+
:benchmark => {
|
17
|
+
:used_percent => ["<", 70.0],
|
18
|
+
}
|
19
|
+
})
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse
|
23
|
+
cont = self.context.dup
|
24
|
+
useful[:memory] = {}
|
25
|
+
cont.readline_match_block(/STATISTICS/) {|b|b}
|
26
|
+
cont.readline_match_block(/(?<used_percent>\d+[\.]\d+)%/) do |block|
|
27
|
+
block.warning_serious(useful[:memory], :used_percent, self)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::Maipu::ShowSystemFan < Aio::Module::Cmd::Maipu
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "show system fan",
|
11
|
+
:cmd_short => "sh sys fan",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is Maipu Command# show system fan",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:platform => "all",
|
16
|
+
:benchmark => {
|
17
|
+
:fan_status => ["==", "NORMAL"],
|
18
|
+
:fan_alarm => ["<", 1]
|
19
|
+
}
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
def parse
|
24
|
+
cont = self.context.dup
|
25
|
+
useful[:fan] = {}
|
26
|
+
|
27
|
+
cont.readline_range_loop(/System FAN Information/, reg_blank) do |cont_layer|
|
28
|
+
parse_fan(cont_layer)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def parse_fan(context)
|
33
|
+
fan = {}
|
34
|
+
fan_id = nil
|
35
|
+
context.readline_match_block(/System FAN Information\(Fan (?<fan_id>\d+) - (?<state>.*)\)/) do |block|
|
36
|
+
fan_id = block[:fan_id]
|
37
|
+
useful[:fan]["slot_#{fan_id}"] = fan
|
38
|
+
block.update(fan, :fan_id)
|
39
|
+
block.update(fan, :state)
|
40
|
+
end
|
41
|
+
|
42
|
+
if fan[:state] =~ /ONLINE/
|
43
|
+
context.readline_match_block(/Status: (?<fan_status>.*)/) do |block|
|
44
|
+
block.warning_serious(fan, :fan_status, self)
|
45
|
+
end
|
46
|
+
context.readline_match_block(/Last-Alarm: (?<fan_alarm>\d+)/) do |block|
|
47
|
+
block.warning_serious(fan, :fan_alarm, self)
|
48
|
+
end
|
49
|
+
context.readline_match_block(/Serial No\.: (?<sn>.*)/) do |block|
|
50
|
+
block.update(fan, :sn)
|
51
|
+
end
|
52
|
+
context.readline_match_block(/Description: (?<description>.*)/) do |block|
|
53
|
+
block.update(fan, :description)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context.readline_match_block(/STATISTICS: (?<in>\d+) IN, (?<out>\d+) OUT, (?<in_error>\d+) IERR, (?<out_error>\d+) OERR/) do |block|
|
58
|
+
stat = {}
|
59
|
+
fan[:statistics] = stat
|
60
|
+
block.update(stat, :in)
|
61
|
+
block.update(stat, :out)
|
62
|
+
block.update(stat, :in_error)
|
63
|
+
block.update(stat, :out_error)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::Maipu::ShowSystemPower < Aio::Module::Cmd::Maipu
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "show system power",
|
11
|
+
:cmd_short => "sh sys po",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is Maipu Command# show system power",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:platform => "all",
|
16
|
+
:benchmark => {
|
17
|
+
:power_status => ["==", "NORMAL"],
|
18
|
+
:power_alarm => ["<", 1]
|
19
|
+
}
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
def parse
|
24
|
+
cont = self.context.dup
|
25
|
+
useful[:power] = {}
|
26
|
+
|
27
|
+
cont.readline_range_loop(/System Power Information/, reg_blank) do |cont_layer|
|
28
|
+
parse_power(cont_layer)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def parse_power(context)
|
33
|
+
power = {}
|
34
|
+
power_id = nil
|
35
|
+
context.readline_match_block(/System Power Information\(Power (?<power_id>\d+) - (?<state>.*)\)/) do |block|
|
36
|
+
power_id = block[:power_id]
|
37
|
+
useful[:power]["slot_#{power_id}"] = power
|
38
|
+
block.update(power, :power_id)
|
39
|
+
block.update(power, :state)
|
40
|
+
end
|
41
|
+
|
42
|
+
if power[:state] =~ /ONLINE/
|
43
|
+
context.readline_match_block(/Status: (?<power_status>.*)/) do |block|
|
44
|
+
block.warning_serious(power, :power_status, self)
|
45
|
+
end
|
46
|
+
context.readline_match_block(/Last-Alarm: (?<power_alarm>\d+)/) do |block|
|
47
|
+
block.warning_serious(power, :power_alarm, self)
|
48
|
+
end
|
49
|
+
context.readline_match_block(/Serial No\.: (?<sn>.*)/) do |block|
|
50
|
+
block.update(power, :sn)
|
51
|
+
end
|
52
|
+
context.readline_match_block(/Description: (?<description>.*)/) do |block|
|
53
|
+
block.update(power, :description)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context.readline_match_block(/STATISTICS: (?<in>\d+) IN, (?<out>\d+) OUT, (?<in_error>\d+) IERR, (?<out_error>\d+) OERR/) do |block|
|
58
|
+
stat = {}
|
59
|
+
power[:statistics] = stat
|
60
|
+
block.update(stat, :in)
|
61
|
+
block.update(stat, :out)
|
62
|
+
block.update(stat, :in_error)
|
63
|
+
block.update(stat, :out_error)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Cmd::Maipu::ShowVersion < Aio::Module::Cmd::Maipu
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:cmd_full => "show version",
|
11
|
+
:cmd_short => "sh ver",
|
12
|
+
:author => "Elin",
|
13
|
+
:description => "This is Maipu Command# show version",
|
14
|
+
:ranking => Ranking_1,
|
15
|
+
:platform => "all",
|
16
|
+
:key_stand => true,
|
17
|
+
:benchmark => {}
|
18
|
+
})
|
19
|
+
end
|
20
|
+
|
21
|
+
def parse
|
22
|
+
cont = self.context.dup
|
23
|
+
soft_info = {}
|
24
|
+
useful[:software] = soft_info
|
25
|
+
|
26
|
+
cont.readline_match_block(/MyPower \(R\) Operating System Software/) do |block|
|
27
|
+
key_stand_maipu
|
28
|
+
end
|
29
|
+
cont.readline_match_block(/(?<device_model>.*) Version Information/) do |block|
|
30
|
+
block.update(soft_info, :device_model)
|
31
|
+
end
|
32
|
+
cont.readline_match_block(/System ID : (?<board_id>.*)/) do |block|
|
33
|
+
block.update(soft_info, :board_id)
|
34
|
+
end
|
35
|
+
cont.readline_match_block(/Hardware Model : (?<hw_info>.*)/) do |block|
|
36
|
+
block.update(soft_info, :hw_info)
|
37
|
+
end
|
38
|
+
cont.readline_match_block(/Software Version : (?<version>.*)/) do |block|
|
39
|
+
block.update(soft_info, :version)
|
40
|
+
end
|
41
|
+
cont.readline_match_block(/Software Image File : (?<soft_image>.*)/) do |block|
|
42
|
+
block.update(soft_info, :soft_image)
|
43
|
+
end
|
44
|
+
cont.readline_match_block(/System Uptime is (?<uptime>.*)/) do |block|
|
45
|
+
block.update(soft_info, :uptime)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::CRC < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :crc,
|
12
|
+
:name => "CRC",
|
13
|
+
:title => "CRC检查",
|
14
|
+
:description => "CRC信息描述"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"要求接口数据统计中CRC统计数为0。"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::InputErrors < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :input_errors,
|
12
|
+
:name => "接口进方向错误包",
|
13
|
+
:title => "接口进方向错误包检查",
|
14
|
+
:description => "Temp"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"要求接口数据统计中的Input Errors统计数为0。"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::Overrun < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :overrun,
|
12
|
+
:name => "超出接口承受能力",
|
13
|
+
:title => "接口OVERRUN检查",
|
14
|
+
:description => "接口Overrun检查"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"接口接收的包超过接口的承受能力,此值应该为0。"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::ProcRatio < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :proc_ratio,
|
12
|
+
:name => "内存利用率过高",
|
13
|
+
:title => "内存利用率检查",
|
14
|
+
:description => "内存利用率"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"内存利用率应该不高于70%。"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::Protocol < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :protocol,
|
12
|
+
:name => "接口协议Down",
|
13
|
+
:title => "接口协议检查",
|
14
|
+
:description => "当状态是起来的,但是协议为Down,则纳入警告"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"接口状态应该为物理状态Up,并且协议状态Up。"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::Register < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :register,
|
12
|
+
:name => "寄存器错误",
|
13
|
+
:title => "寄存器值检查",
|
14
|
+
:description => "寄存器值检查"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"要求寄存器的值为正确值。"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::Runts < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :runts,
|
12
|
+
:name => "Temp",
|
13
|
+
:title => "Temp",
|
14
|
+
:description => "Temp"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
""
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
|
3
|
+
require "aio/core"
|
4
|
+
|
5
|
+
class Aio::Module::Description::Temp < Aio::Module::Description
|
6
|
+
include Aio::Module
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super({
|
10
|
+
:author => "Elin",
|
11
|
+
:case => :tmp,
|
12
|
+
:name => "Temp",
|
13
|
+
:title => "Temp",
|
14
|
+
:description => "Temp"
|
15
|
+
})
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
""
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|