aio_elin 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,399 +3,375 @@
3
3
  require "aio/core"
4
4
 
5
5
  class Aio::Module::OutputStyle::ExcelTableWps < Aio::Module::OutputStyle
6
- include Aio::Module
7
- include Aio::Device
8
- include Aio::Base::Toolkit::ExcelWps
9
- include Aio::Ui::Verbose
10
-
11
- attr_accessor :worksheet
12
-
13
- #TitleBanner = "湖北中行现场巡检报告"
14
- TitleBanner = "现场巡检报告"
15
- [
16
- # 1号网核心
17
- ["A_HBWHA_COR_CS01", "30.48.1.248"],
18
- ["A_HBWHA_COR_CS02", "30.48.1.249"],
19
- ["A_HBA02_WAN_AR01", "30.48.1.253"],
20
- ["A_HBA02_WAN_AR02", "30.48.1.254"],
21
- ["A_HBWHA_PUB_AS01", "30.48.14.21"],
22
- ["A_HBWHA_PUB_AS02", "30.48.14.22"],
23
- ["A_HBWHA_MAN_DR", "30.49.255.254"],
24
- ["A_HBWHA_SVR_AS01", "30.48.255.250"],
25
- ["A_HBWHA_SVR_AS02", "30.48.255.249"],
26
- ["A_HBWHA_WBN_DR", "30.48.255.254"],
27
- ["A_HBWHB_CAM_DS01", "30.48.254.254"],
28
- ["A_HBWHB_CAM_DS02", "30.48.254.253"],
29
- ["A_HBWHC_MAN_DR", "30.49.255.253"],
30
- ["A_HBZ02_WAN_AR02", "30.48.1.251"],
31
- ["A_HBWHC_WBN_DR", "30.48.255.253"],
32
-
33
- # 2号网核心
34
- ["B_HBWHA_COR_CS01", "21.160.127.1"],
35
- ["B_HBWHA_COR_CS02", "21.160.127.2"],
36
- ["B_HBA02_WAN_AR01", "22.160.120.253"],
37
- ["B_HBA02_WAN_AR02", "22.160.120.254"],
38
- ["B_HBWHA_WBN_DR", "21.160.127.195"],
39
- ["B_HBWHA_MAN_DR01", "21.160.127.197"],
40
- ["B_HBWHA_MAN_DR02", "21.160.127.198"],
41
- ["B_HBWHA_CAM_DS01", "21.160.127.199"],
42
- ["B_HBWHA_CAM_DS02", "21.160.127.200"],
43
- ["B_HBWHA_SVR_DS01", "21.160.127.201"],
44
- ["B_HBWHA_SVR_DS02", "21.160.127.202"],
45
- ["B_HBWHA_ATM_DR01", "21.160.223.254"],
46
- ["B_HBWHA_ATM_DR02", "21.160.223.253"],
47
- ["B_HBWHC_WBN_DR", "21.160.128.195"],
48
- ["B_HBWHB_CAM_DS01", "22.160.95.253"],
49
- ["B_HBZ02_WAN_AR03", "22.160.120.251"],
50
- ["B_HBWHB_CAM_DS02", "22.160.95.254"],
51
- ]
52
-
53
- def initialize
54
- super({
55
- :author => "Elin",
56
- :description => "这个模块按照表格输出excel文件, 以WPS运行",
57
- :file_suffix => "xls",
6
+ include Aio::Module
7
+ include Aio::Device
8
+ include Aio::Base::Toolkit::ExcelWps
9
+ include Aio::Ui::Verbose
10
+
11
+ attr_accessor :worksheet
12
+
13
+ #TitleBanner = "湖北中行现场巡检报告"
14
+ TitleBanner = "现场巡检报告"
15
+
16
+ def initialize
17
+ super({
18
+ :author => "Elin",
19
+ :description => "这个模块按照表格输出excel文件, 以WPS运行",
20
+ :file_suffix => "xls",
58
21
  :platform => ['windows']
59
- })
60
- end
61
-
62
- def generate
63
- excel = WorkBook.new
64
- #excel.show
65
- excel.display_alerts = false
66
- @worksheet = excel.add_worksheet("sheet")
67
-
68
- # 设置整体列宽
69
- @worksheet.width("a", 18)
70
- @worksheet.width("b", 10)
71
- @worksheet.width("c", 15)
72
- @worksheet.width("d", 15)
73
- @worksheet.width("e", 17)
74
- @worksheet.width("f", 7)
75
- @worksheet.width("g", 7)
76
-
77
- # 设置整体行高
78
- @worksheet.height(20)
79
-
80
- # DevicePool.size.times do |t|
81
- # device_name = DevicePool[t][0]
82
- device_manager.devices.each_key do |device_name|
83
- device_klass = device_manager[device_name]
84
- device_info = {
85
- :device_klass => device_klass,
86
- :manager_ip => "", #DevicePool[t][1],
87
- #:device_index => t
88
- }
89
- case device_klass
90
- when Cisco, H3C, Maipu
91
- generate_table(device_info)
92
- else
93
- print_error "未生成表格的设备: #{device_name}"
94
- end
95
- end
96
-
97
- # 设置垂直分页符
98
- @worksheet.pagebreak("H") if @worksheet.has_pagebreak?
99
-
100
- # 恢复警告提示
101
- excel.display_alerts = true
102
-
103
- # 保存
104
- begin
105
- excel.save(output_file.to_s)
106
- rescue Exception => e
107
- puts e.message
108
- ensure
109
- excel.close
110
- end
111
-
112
- end
113
-
114
- def generate_table(device_info)
115
- generate_hander
116
- generate_software(device_info)
117
- generate_clock(device_info)
118
- generate_inventory(device_info)
119
- generate_line
120
- generate_cpu_memory(device_info)
121
- generate_environment(device_info)
122
- generate_interface(device_info)
123
- pagebreak
124
- end
125
-
126
- def generate_hander
127
- @worksheet.add_row do |row|
128
- row.merge("a", "g")
129
- row.height = 30
130
- row << TitleBanner
131
- row.style("a", "TitleStyle")
132
- end
133
- @worksheet.add_row do |row|
134
- row.merge("b", "g")
135
- row << ["巡检命令", "1.基本信息"]
136
- row.style("a", "BoldStyle")
137
- row.style("b", "BoldStyle")
138
- end
139
- end
140
-
141
- def generate_software(device_info)
142
- device_klass = device_info[:device_klass]
143
- cmd = CmdSwitch.version(device_klass)
144
- @worksheet.add_row do |row|
145
- row.merge("c", "d")
146
- row.merge("f", "g")
147
- row << [
148
- cmd,
149
- "设备名称", device_klass.device_name,
150
- "设备型号", device_klass.device_info[:device_model]
151
- ]
152
- row.style("a", "BoldStyle")
153
- end
154
- @begin_row = @worksheet.current_row_id
155
- if !device_info[:manager_ip].empty?
156
- manager = device_info[:manager_ip]
157
- else
158
- manager = device_klass.get_manager_ip
159
- end
160
- @worksheet.add_row do |row|
161
- row.merge("c", "d")
162
- row.merge("f", "g")
163
- row.height = 24
164
- row << [
165
- cmd,
166
- #"管理IP", device_info[:manager_ip],
167
- "管理IP", manager,
168
- "IOS版本", device_klass.ios_version
169
- ]
170
- row.wraptext("f")
171
- end
172
- @worksheet.add_row do |row|
173
- row.merge("c", "g")
174
- row << [
175
- cmd,
176
- "IOS特性集", device_klass.soft_image
177
- ]
178
- end
179
- @worksheet.add_row do |row|
180
- row.merge("c", "g")
181
- row << [
182
- cmd,
183
- "运行时间", device_klass.uptime
184
- ]
185
- end
186
- @end_row = @worksheet.current_row_id
187
- @worksheet.merge("a#{@begin_row}", "a#{@end_row}")
188
- end
189
-
190
- def generate_clock(device_info)
191
- device_klass = device_info[:device_klass]
192
- cmd = case device_klass
193
- when Cisco, Maipu
194
- "show clock"
195
- when H3C
196
- "display clock"
197
- end
198
- @worksheet.add_row do |row|
199
- row.merge("c", "g")
200
- tmp = device_klass.clock
201
- time = Aio::Base::Toolkit::Date.time_to_s(tmp)
202
- time.insert(0, "`") if time.size > 5
203
- row << [
204
- cmd,
205
- "巡检时间", time
206
- ]
207
- row.style("a", "BoldStyle")
208
- end
209
- end
210
-
211
- def generate_inventory(device_info)
212
- device_klass = device_info[:device_klass]
213
- cmd = CmdSwitch.inventory(device_klass)
214
-
215
- @worksheet.add_row do |row|
216
- row.merge("b", "c")
217
- row.merge("f", "g")
218
- row << [
219
- cmd,
220
- "硬件信息", "接口卡型号", "序列号", "备注"
221
- ]
222
- row.style("a", "BoldStyle")
223
- row.wraptext("a")
224
- end
225
- @begin_row = @worksheet.current_row_id
226
-
227
- # 循环添加inventory条目
228
- inv = device_klass.inventory
229
- inv.each do |info|
230
- @worksheet.add_row do |row|
231
- row.merge("b", "c")
232
- row.merge("f", "g")
233
- row << [
234
- cmd,
235
- info[:name], info[:pid], info[:sn], ""
236
- ]
237
- row.wraptext("b")
238
- row.wraptext("e")
239
- end
240
- end
241
-
242
- # 当不足10条的时候,填充空白条目至10条
243
- if inv.size < 10
244
- (10 - inv.size).times do |t|
245
- @worksheet.add_row do |row|
246
- row.merge("b", "c")
247
- row.merge("f", "g")
248
- row << [
249
- cmd,
250
- "", "", "", ""
251
- ]
252
- end
253
- end
254
- end
255
- @end_row = @worksheet.current_row_id
256
- @worksheet.merge("a#{@begin_row}", "a#{@end_row}")
257
- end
258
-
259
- def generate_line
260
- @worksheet.add_row do |row|
261
- row.merge("b", "g")
262
- row << [
263
- "", "2.运行状态巡检信息采集"
264
- ]
265
- row.style("b", "BoldStyle")
266
- end
267
- @worksheet.add_row do |row|
268
- row.merge("d", "e")
269
- row.merge("f", "g")
270
- row << [
271
- "", "项目", "内容", "结果", "备注"
272
- ]
273
- row.style("b", "BoldStyle")
274
- row.style("c", "BoldStyle")
275
- row.style("d", "BoldStyle")
276
- row.style("f", "BoldStyle")
277
- end
278
- end
279
-
280
- def generate_cpu_memory(device_info)
281
- device_klass = device_info[:device_klass]
282
- cmd_cpu = CmdSwitch.cpu(device_klass)
283
- cmd_mem = CmdSwitch.memory(device_klass)
284
-
285
- @worksheet.add_row do |row|
286
- row.merge("d", "e")
287
- row.merge("f", "g")
288
- row << [
289
- cmd_cpu, "路由状态",
290
- "cpu 利用率(%)", device_klass.cpu_percent,
291
- ""
292
- ]
293
- row.style("a", "BoldStyle")
294
- end
295
- @begin_row = @worksheet.current_row_id
296
-
297
- @worksheet.add_row do |row|
298
- row.merge("d", "e")
299
- row.merge("f", "g")
300
- row << [
301
- cmd_mem, "路由状态",
302
- "memory 利用率(%)", device_klass.memory_percent,
303
- ""
304
- ]
305
- row.style("a", "BoldStyle")
306
- end
307
- end
308
-
309
- def generate_environment(device_info)
310
- device_klass = device_info[:device_klass]
311
- cmd = case device_klass
312
- when Cisco
313
- ["show environment"] * 3
314
- when H3C
315
- [nil, "display power", "display fan"]
316
- when Maipu
317
- ["show environment", "show system power",
318
- "show system fan" ]
319
- else
320
- ["show environment"] * 3
321
- end
322
-
323
- unless cmd[0].nil?
324
- @worksheet.add_row do |row|
325
- tmp = alarm_text(device_klass.warning_env?)
326
- row.merge("d", "e")
327
- row.merge("f", "g")
328
- row << [
329
- cmd[0], "路由状态",
330
- "温度", tmp,
331
- ""
332
- ]
333
- row.style("a", "BoldStyle")
334
- end
335
- end
336
- beg_row = @worksheet.current_row_id
337
-
338
- @worksheet.add_row do |row|
339
- tmp = alarm_text(device_klass.warning_env?)
340
- row.merge("d", "e")
341
- row.merge("f", "g")
342
- row << [
343
- cmd[1], "路由状态",
344
- "电源", tmp,
345
- ""
346
- ]
347
- row.style("a", "BoldStyle")
348
- end
349
- @worksheet.add_row do |row|
350
- tmp = alarm_text(device_klass.warning_env?)
351
- row.merge("d", "e")
352
- row.merge("f", "g")
353
- row << [
354
- cmd[2], "路由状态",
355
- "风扇", tmp,
356
- ""
357
- ]
358
- row.style("a", "BoldStyle")
359
- end
360
- end_row = @worksheet.current_row_id
361
-
362
- # 如果cmd都是一样的,那么就合并
363
- if cmd[0] == cmd[1] and cmd[1] == cmd[2]
364
- @worksheet.merge("a#{beg_row}", "a#{end_row}")
365
- end
366
- end
367
-
368
- def generate_interface(device_info)
369
- device_klass = device_info[:device_klass]
370
- cmd = CmdSwitch.interface(device_klass)
371
-
372
- @worksheet.add_row do |row|
373
- tmp = alarm_text(device_klass.warning_env?)
374
- row.merge("d", "e")
375
- row.merge("f", "g")
376
- row << [
377
- cmd, "路由状态",
378
- "接口状态", tmp,
379
- ""
380
- ]
381
- row.style("a", "BoldStyle")
382
- end
383
- @end_row = @worksheet.current_row_id
384
-
385
- @worksheet.merge("b#{@begin_row}", "b#{@end_row}")
386
- end
387
-
388
- def pagebreak
389
- @worksheet.current_row.pagebreak
390
- end
391
-
392
- def alarm_text(bool)
393
- if bool == true
394
- return "正常 □ 异常 ■"
395
- else
396
- return "正常 ■ 异常 □"
397
- end
398
- end
22
+ })
23
+ end
24
+
25
+ def generate
26
+ excel = WorkBook.new
27
+ #excel.show
28
+ excel.display_alerts = false
29
+ @worksheet = excel.add_worksheet("sheet")
30
+
31
+ # 设置整体列宽
32
+ @worksheet.width("a", 18)
33
+ @worksheet.width("b", 10)
34
+ @worksheet.width("c", 15)
35
+ @worksheet.width("d", 15)
36
+ @worksheet.width("e", 17)
37
+ @worksheet.width("f", 7)
38
+ @worksheet.width("g", 7)
39
+
40
+ # 设置整体行高
41
+ @worksheet.height(20)
42
+
43
+ # DevicePool.size.times do |t|
44
+ # device_name = DevicePool[t][0]
45
+ device_manager.devices.each_key do |device_name|
46
+ device_klass = device_manager[device_name]
47
+ device_info = {
48
+ :device_klass => device_klass,
49
+ :manager_ip => "", #DevicePool[t][1],
50
+ #:device_index => t
51
+ }
52
+ case device_klass
53
+ when Cisco, H3C, Maipu
54
+ generate_table(device_info)
55
+ else
56
+ print_error "生成为空白表格的设备: #{device_name}"
57
+ generate_white_table(device_name)
58
+ end
59
+ end
60
+
61
+ # 设置垂直分页符
62
+ @worksheet.pagebreak("H") if @worksheet.has_pagebreak?
63
+
64
+ # 恢复警告提示
65
+ excel.display_alerts = true
66
+
67
+ # 保存
68
+ begin
69
+ excel.save(output_file.to_s)
70
+ rescue Exception => e
71
+ puts e.message
72
+ ensure
73
+ excel.close
74
+ end
75
+
76
+ end
77
+
78
+ # 当无法生成表格的时候,自动生成一个空白表格,只有设备名称
79
+ def generate_white_table(device_name)
80
+ device_klass = Aio::Device::Cisco.new
81
+ device_klass.device_name = device_name
82
+ device_info = {
83
+ device_klass: device_klass,
84
+ manager_ip: ""
85
+ }
86
+
87
+ generate_table(device_info)
88
+ end
89
+
90
+ def generate_table(device_info)
91
+ generate_hander
92
+ generate_software(device_info)
93
+ generate_clock(device_info)
94
+ generate_inventory(device_info)
95
+ generate_line
96
+ generate_cpu_memory(device_info)
97
+ generate_environment(device_info)
98
+ generate_interface(device_info)
99
+ pagebreak
100
+ end
101
+
102
+ def generate_hander
103
+ @worksheet.add_row do |row|
104
+ row.merge("a", "g")
105
+ row.height = 30
106
+ row << TitleBanner
107
+ row.style("a", "TitleStyle")
108
+ end
109
+ @worksheet.add_row do |row|
110
+ row.merge("b", "g")
111
+ row << ["巡检命令", "1.基本信息"]
112
+ row.style("a", "BoldStyle")
113
+ row.style("b", "BoldStyle")
114
+ end
115
+ end
116
+
117
+ def generate_software(device_info)
118
+ device_klass = device_info[:device_klass]
119
+ cmd = CmdSwitch.version(device_klass)
120
+ @worksheet.add_row do |row|
121
+ row.merge("c", "d")
122
+ row.merge("f", "g")
123
+ row << [
124
+ cmd,
125
+ "设备名称", device_klass.device_name,
126
+ "设备型号", device_klass.device_info[:device_model]
127
+ ]
128
+ row.style("a", "BoldStyle")
129
+ end
130
+ @begin_row = @worksheet.current_row_id
131
+ if !device_info[:manager_ip].empty?
132
+ manager = device_info[:manager_ip]
133
+ else
134
+ manager = device_klass.get_manager_ip
135
+ end
136
+ @worksheet.add_row do |row|
137
+ row.merge("c", "d")
138
+ row.merge("f", "g")
139
+ row.height = 24
140
+ row << [
141
+ cmd,
142
+ #"管理IP", device_info[:manager_ip],
143
+ "管理IP", manager,
144
+ "IOS版本", device_klass.ios_version
145
+ ]
146
+ row.wraptext("f")
147
+ end
148
+ @worksheet.add_row do |row|
149
+ row.merge("c", "g")
150
+ row << [
151
+ cmd,
152
+ "IOS特性集", device_klass.soft_image
153
+ ]
154
+ end
155
+ @worksheet.add_row do |row|
156
+ row.merge("c", "g")
157
+ row << [
158
+ cmd,
159
+ "运行时间", device_klass.uptime
160
+ ]
161
+ end
162
+ @end_row = @worksheet.current_row_id
163
+ @worksheet.merge("a#{@begin_row}", "a#{@end_row}")
164
+ end
165
+
166
+ def generate_clock(device_info)
167
+ device_klass = device_info[:device_klass]
168
+ cmd = case device_klass
169
+ when Cisco, Maipu
170
+ "show clock"
171
+ when H3C
172
+ "display clock"
173
+ end
174
+ @worksheet.add_row do |row|
175
+ row.merge("c", "g")
176
+ tmp = device_klass.clock
177
+ time = Aio::Base::Toolkit::Date.time_to_s(tmp)
178
+ time.insert(0, "`") if time.size > 5
179
+ row << [
180
+ cmd,
181
+ "巡检时间", time
182
+ ]
183
+ row.style("a", "BoldStyle")
184
+ end
185
+ end
186
+
187
+ def generate_inventory(device_info)
188
+ device_klass = device_info[:device_klass]
189
+ cmd = CmdSwitch.inventory(device_klass)
190
+
191
+ @worksheet.add_row do |row|
192
+ row.merge("b", "c")
193
+ row.merge("f", "g")
194
+ row << [
195
+ cmd,
196
+ "硬件信息", "接口卡型号", "序列号", "备注"
197
+ ]
198
+ row.style("a", "BoldStyle")
199
+ row.wraptext("a")
200
+ end
201
+ @begin_row = @worksheet.current_row_id
202
+
203
+ # 循环添加inventory条目
204
+ inv = device_klass.inventory
205
+ inv.each do |info|
206
+ @worksheet.add_row do |row|
207
+ row.merge("b", "c")
208
+ row.merge("f", "g")
209
+ row << [
210
+ cmd,
211
+ info[:name], info[:pid], info[:sn], ""
212
+ ]
213
+ row.wraptext("b")
214
+ row.wraptext("e")
215
+ end
216
+ end
217
+
218
+ # 当不足10条的时候,填充空白条目至10条
219
+ if inv.size < 10
220
+ (10 - inv.size).times do |t|
221
+ @worksheet.add_row do |row|
222
+ row.merge("b", "c")
223
+ row.merge("f", "g")
224
+ row << [
225
+ cmd,
226
+ "", "", "", ""
227
+ ]
228
+ end
229
+ end
230
+ end
231
+ @end_row = @worksheet.current_row_id
232
+ @worksheet.merge("a#{@begin_row}", "a#{@end_row}")
233
+ end
234
+
235
+ def generate_line
236
+ @worksheet.add_row do |row|
237
+ row.merge("b", "g")
238
+ row << [
239
+ "", "2.运行状态巡检信息采集"
240
+ ]
241
+ row.style("b", "BoldStyle")
242
+ end
243
+ @worksheet.add_row do |row|
244
+ row.merge("d", "e")
245
+ row.merge("f", "g")
246
+ row << [
247
+ "", "项目", "内容", "结果", "备注"
248
+ ]
249
+ row.style("b", "BoldStyle")
250
+ row.style("c", "BoldStyle")
251
+ row.style("d", "BoldStyle")
252
+ row.style("f", "BoldStyle")
253
+ end
254
+ end
255
+
256
+ def generate_cpu_memory(device_info)
257
+ device_klass = device_info[:device_klass]
258
+ cmd_cpu = CmdSwitch.cpu(device_klass)
259
+ cmd_mem = CmdSwitch.memory(device_klass)
260
+
261
+ @worksheet.add_row do |row|
262
+ row.merge("d", "e")
263
+ row.merge("f", "g")
264
+ row << [
265
+ cmd_cpu, "路由状态",
266
+ "cpu 利用率(%)", device_klass.cpu_percent,
267
+ ""
268
+ ]
269
+ row.style("a", "BoldStyle")
270
+ end
271
+ @begin_row = @worksheet.current_row_id
272
+
273
+ @worksheet.add_row do |row|
274
+ row.merge("d", "e")
275
+ row.merge("f", "g")
276
+ row << [
277
+ cmd_mem, "路由状态",
278
+ "memory 利用率(%)", device_klass.memory_percent,
279
+ ""
280
+ ]
281
+ row.style("a", "BoldStyle")
282
+ end
283
+ end
284
+
285
+ def generate_environment(device_info)
286
+ device_klass = device_info[:device_klass]
287
+ cmd = case device_klass
288
+ when Cisco
289
+ ["show environment"] * 3
290
+ when H3C
291
+ [nil, "display power", "display fan"]
292
+ when Maipu
293
+ ["show environment", "show system power",
294
+ "show system fan" ]
295
+ else
296
+ ["show environment"] * 3
297
+ end
298
+
299
+ unless cmd[0].nil?
300
+ @worksheet.add_row do |row|
301
+ tmp = alarm_text(device_klass.warning_env?)
302
+ row.merge("d", "e")
303
+ row.merge("f", "g")
304
+ row << [
305
+ cmd[0], "路由状态",
306
+ "温度", tmp,
307
+ ""
308
+ ]
309
+ row.style("a", "BoldStyle")
310
+ end
311
+ end
312
+ beg_row = @worksheet.current_row_id
313
+
314
+ @worksheet.add_row do |row|
315
+ tmp = alarm_text(device_klass.warning_env?)
316
+ row.merge("d", "e")
317
+ row.merge("f", "g")
318
+ row << [
319
+ cmd[1], "路由状态",
320
+ "电源", tmp,
321
+ ""
322
+ ]
323
+ row.style("a", "BoldStyle")
324
+ end
325
+ @worksheet.add_row do |row|
326
+ tmp = alarm_text(device_klass.warning_env?)
327
+ row.merge("d", "e")
328
+ row.merge("f", "g")
329
+ row << [
330
+ cmd[2], "路由状态",
331
+ "风扇", tmp,
332
+ ""
333
+ ]
334
+ row.style("a", "BoldStyle")
335
+ end
336
+ end_row = @worksheet.current_row_id
337
+
338
+ # 如果cmd都是一样的,那么就合并
339
+ if cmd[0] == cmd[1] and cmd[1] == cmd[2]
340
+ @worksheet.merge("a#{beg_row}", "a#{end_row}")
341
+ end
342
+ end
343
+
344
+ def generate_interface(device_info)
345
+ device_klass = device_info[:device_klass]
346
+ cmd = CmdSwitch.interface(device_klass)
347
+
348
+ @worksheet.add_row do |row|
349
+ tmp = alarm_text(device_klass.warning_env?)
350
+ row.merge("d", "e")
351
+ row.merge("f", "g")
352
+ row << [
353
+ cmd, "路由状态",
354
+ "接口状态", tmp,
355
+ ""
356
+ ]
357
+ row.style("a", "BoldStyle")
358
+ end
359
+ @end_row = @worksheet.current_row_id
360
+
361
+ @worksheet.merge("b#{@begin_row}", "b#{@end_row}")
362
+ end
363
+
364
+ def pagebreak
365
+ @worksheet.current_row.pagebreak
366
+ end
367
+
368
+ def alarm_text(bool)
369
+ if bool == true
370
+ return "正常 □ 异常 ■"
371
+ else
372
+ return "正常 ■ 异常 □"
373
+ end
374
+ end
399
375
 
400
376
  end
401
377