aio_elin 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+