aio_elin 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +675 -0
  3. data/README.md +9 -0
  4. data/config.rb +39 -0
  5. data/lib/aio/base/debug.rb +30 -0
  6. data/lib/aio/base/toolkit/array.rb +24 -0
  7. data/lib/aio/base/toolkit/date.rb +46 -0
  8. data/lib/aio/base/toolkit/deep_clone.rb +10 -0
  9. data/lib/aio/base/toolkit/diff.rb +104 -0
  10. data/lib/aio/base/toolkit/excel_office.rb +421 -0
  11. data/lib/aio/base/toolkit/excel_wps.rb +437 -0
  12. data/lib/aio/base/toolkit/excel_wps.rb.bak +299 -0
  13. data/lib/aio/base/toolkit/ipaddr.rb +28 -0
  14. data/lib/aio/base/toolkit/os.rb +26 -0
  15. data/lib/aio/base/toolkit/regexp.rb +32 -0
  16. data/lib/aio/base/toolkit/string.rb +28 -0
  17. data/lib/aio/base/toolkit/table.rb +441 -0
  18. data/lib/aio/base/toolkit/test_diff.rb +9 -0
  19. data/lib/aio/base/toolkit/test_excel.rb +118 -0
  20. data/lib/aio/base/toolkit/test_word.rb +58 -0
  21. data/lib/aio/base/toolkit/word_wps.rb +492 -0
  22. data/lib/aio/base/toolkit.rb +18 -0
  23. data/lib/aio/base.rb +10 -0
  24. data/lib/aio/core/device/cisco.rb +13 -0
  25. data/lib/aio/core/device/cmd_switch.rb +113 -0
  26. data/lib/aio/core/device/h3c.rb +12 -0
  27. data/lib/aio/core/device/huawei.rb +10 -0
  28. data/lib/aio/core/device/juniper.rb +10 -0
  29. data/lib/aio/core/device/maipu.rb +11 -0
  30. data/lib/aio/core/device/methods.rb +233 -0
  31. data/lib/aio/core/device/methods.rb.bak +199 -0
  32. data/lib/aio/core/device/parent_device.rb +275 -0
  33. data/lib/aio/core/device.rb +15 -0
  34. data/lib/aio/core/device_manager.rb +207 -0
  35. data/lib/aio/core/module/cmd.rb +160 -0
  36. data/lib/aio/core/module/description.rb +67 -0
  37. data/lib/aio/core/module/input_style.rb +98 -0
  38. data/lib/aio/core/module/output_style.rb +80 -0
  39. data/lib/aio/core/module/platform.rb +30 -0
  40. data/lib/aio/core/module/ranking.rb +24 -0
  41. data/lib/aio/core/module/special_style.rb +30 -0
  42. data/lib/aio/core/module/template.rb +13 -0
  43. data/lib/aio/core/module.rb +15 -0
  44. data/lib/aio/core/module_loader.rb +161 -0
  45. data/lib/aio/core/module_loader.rb.bak +148 -0
  46. data/lib/aio/core/module_manager.rb +112 -0
  47. data/lib/aio/core/module_manager.rb.bak +78 -0
  48. data/lib/aio/core/parse/file.rb +19 -0
  49. data/lib/aio/core/parse/parser.rb +91 -0
  50. data/lib/aio/core/parse/parser_machine/bak/has_cmd_state.rb +14 -0
  51. data/lib/aio/core/parse/parser_machine/bak/has_context_state.rb +11 -0
  52. data/lib/aio/core/parse/parser_machine/bak/no_cmd_state.rb +11 -0
  53. data/lib/aio/core/parse/parser_machine/bak/no_context_state.rb +11 -0
  54. data/lib/aio/core/parse/parser_machine/full_state.rb +12 -0
  55. data/lib/aio/core/parse/parser_machine/has_device_state.rb +44 -0
  56. data/lib/aio/core/parse/parser_machine/no_device_state.rb +12 -0
  57. data/lib/aio/core/parse/parser_machine/parent_state.rb +26 -0
  58. data/lib/aio/core/parse/parser_machine.rb +47 -0
  59. data/lib/aio/core/parse.rb +6 -0
  60. data/lib/aio/core/text/context.rb +211 -0
  61. data/lib/aio/core/text/line_string.rb +74 -0
  62. data/lib/aio/core/text/warning.rb +179 -0
  63. data/lib/aio/core/text.rb +7 -0
  64. data/lib/aio/core/warning/description.rb +47 -0
  65. data/lib/aio/core/warning/warning_summarize.rb +232 -0
  66. data/lib/aio/core/warning.rb +6 -0
  67. data/lib/aio/core.rb +32 -0
  68. data/lib/aio/license.rb +687 -0
  69. data/lib/aio/resource/cover_picture.png +0 -0
  70. data/lib/aio/resource/line.png +0 -0
  71. data/lib/aio/resource/logo.png +0 -0
  72. data/lib/aio/ui/banner.rb +85 -0
  73. data/lib/aio/ui/readable_text.rb +75 -0
  74. data/lib/aio/ui/verbose.rb +29 -0
  75. data/lib/aio/ui/version.rb +9 -0
  76. data/lib/aio/ui.rb +138 -0
  77. data/lib/aio.rb +13 -0
  78. data/lib/modules/cmd/cisco/show_clock.rb +32 -0
  79. data/lib/modules/cmd/cisco/show_cpu.rb +32 -0
  80. data/lib/modules/cmd/cisco/show_env.rb +71 -0
  81. data/lib/modules/cmd/cisco/show_failover.rb +39 -0
  82. data/lib/modules/cmd/cisco/show_interface_ip_brief.rb +24 -0
  83. data/lib/modules/cmd/cisco/show_interfaces.rb +177 -0
  84. data/lib/modules/cmd/cisco/show_inv.rb +43 -0
  85. data/lib/modules/cmd/cisco/show_ip_interface_brief.rb +42 -0
  86. data/lib/modules/cmd/cisco/show_ip_ospf_nei.rb +38 -0
  87. data/lib/modules/cmd/cisco/show_ip_route_summary.rb +81 -0
  88. data/lib/modules/cmd/cisco/show_memory.rb +27 -0
  89. data/lib/modules/cmd/cisco/show_process_cpu.rb +35 -0
  90. data/lib/modules/cmd/cisco/show_process_memory.rb +63 -0
  91. data/lib/modules/cmd/cisco/show_version.rb +97 -0
  92. data/lib/modules/cmd/h3c/display_clock.rb +32 -0
  93. data/lib/modules/cmd/h3c/display_cpu.rb +51 -0
  94. data/lib/modules/cmd/h3c/display_device_manuinfo.rb +45 -0
  95. data/lib/modules/cmd/h3c/display_fan.rb +91 -0
  96. data/lib/modules/cmd/h3c/display_interface.rb +203 -0
  97. data/lib/modules/cmd/h3c/display_ip_interface_brief.rb +34 -0
  98. data/lib/modules/cmd/h3c/display_ip_routing.rb +68 -0
  99. data/lib/modules/cmd/h3c/display_ip_routing_stat.rb +90 -0
  100. data/lib/modules/cmd/h3c/display_memory.rb +35 -0
  101. data/lib/modules/cmd/h3c/display_ospf_peer.rb +38 -0
  102. data/lib/modules/cmd/h3c/display_power.rb +90 -0
  103. data/lib/modules/cmd/h3c/display_version.rb +54 -0
  104. data/lib/modules/cmd/h3c/display_vrrp_verbose.rb +86 -0
  105. data/lib/modules/cmd/maipu/show_env.rb +34 -0
  106. data/lib/modules/cmd/maipu/show_ip_route.rb +74 -0
  107. data/lib/modules/cmd/maipu/show_ip_route_statistic.rb +36 -0
  108. data/lib/modules/cmd/maipu/show_memory.rb +31 -0
  109. data/lib/modules/cmd/maipu/show_system_fan.rb +66 -0
  110. data/lib/modules/cmd/maipu/show_system_power.rb +66 -0
  111. data/lib/modules/cmd/maipu/show_version.rb +50 -0
  112. data/lib/modules/description/style/crc.rb +22 -0
  113. data/lib/modules/description/style/input_errors.rb +22 -0
  114. data/lib/modules/description/style/overrun.rb +22 -0
  115. data/lib/modules/description/style/proc_ratio.rb +22 -0
  116. data/lib/modules/description/style/protocol.rb +22 -0
  117. data/lib/modules/description/style/register.rb +22 -0
  118. data/lib/modules/description/style/runts.rb +22 -0
  119. data/lib/modules/description/style/template.rb +22 -0
  120. data/lib/modules/description/style/total_output_drops.rb +22 -0
  121. data/lib/modules/input/style/compare_xml.rb +89 -0
  122. data/lib/modules/input/style/console.rb +222 -0
  123. data/lib/modules/input/style/console.rb.bak +114 -0
  124. data/lib/modules/input/style/xinhua_nat.rb +70 -0
  125. data/lib/modules/output/style/boc_day.rb +223 -0
  126. data/lib/modules/output/style/cmds.rb +77 -0
  127. data/lib/modules/output/style/compare_json.rb +26 -0
  128. data/lib/modules/output/style/compare_report.rb +31 -0
  129. data/lib/modules/output/style/compare_xml.rb +86 -0
  130. data/lib/modules/output/style/excel_table_office.rb +407 -0
  131. data/lib/modules/output/style/excel_table_wps.rb +400 -0
  132. data/lib/modules/output/style/summary_report.rb +563 -0
  133. data/lib/modules/special/style/compare.rb +110 -0
  134. 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
+