network-utility 1.1.4

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 (179) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +2 -0
  3. data/document/acl-M6000-16E.md +27 -0
  4. data/document/acl-M6000-18S.md +27 -0
  5. data/document/acl-M6000-8.md +27 -0
  6. data/document/acl-M6000-8E.md +27 -0
  7. data/document/acl-MA5200G-8.md +204 -0
  8. data/document/acl-ME60-16.md +177 -0
  9. data/document/acl-ME60-X16.md +177 -0
  10. data/document/acl-NE40E-X16.md +204 -0
  11. data/document/acl-NE40E-X16A.md +204 -0
  12. data/document/acl-NE40E-X8.md +204 -0
  13. data/document/acl-NE40E.md +204 -0
  14. data/document/acl-NE5000E-20.md +25 -0
  15. data/document/acl-NE5000E-X16.md +25 -0
  16. data/document/acl-NE5000E-X16A.md +25 -0
  17. data/document/acl-NE80E.md +204 -0
  18. data/document/bgp-CR16010H-F.md +25 -0
  19. data/document/bgp-CR16018-F.md +25 -0
  20. data/document/bgp-CR19000-20.md +25 -0
  21. data/document/bgp-M6000-16E.md +25 -0
  22. data/document/bgp-M6000-18S.md +25 -0
  23. data/document/bgp-M6000-8.md +25 -0
  24. data/document/bgp-M6000-8E.md +25 -0
  25. data/document/bgp-MA5200G-8.md +25 -0
  26. data/document/bgp-ME60-16.md +25 -0
  27. data/document/bgp-ME60-X16.md +25 -0
  28. data/document/bgp-NE40E-X16.md +25 -0
  29. data/document/bgp-NE40E-X16A.md +25 -0
  30. data/document/bgp-NE40E-X8.md +25 -0
  31. data/document/bgp-NE40E.md +25 -0
  32. data/document/bgp-NE5000E-20.md +25 -0
  33. data/document/bgp-NE5000E-X16.md +25 -0
  34. data/document/bgp-NE5000E-X16A.md +25 -0
  35. data/document/bgp-NE80E.md +25 -0
  36. data/document/config.md +1153 -0
  37. data/document/document.rb +27 -0
  38. data/document/if-ALCATEL7750.md +48 -0
  39. data/document/if-C7609.md +47 -0
  40. data/document/if-CR16010H-F.md +300 -0
  41. data/document/if-CR16018-F.md +300 -0
  42. data/document/if-CR19000-20.md +300 -0
  43. data/document/if-CRS-16.md +47 -0
  44. data/document/if-CX600-X16A.md +349 -0
  45. data/document/if-CX600-X8A.md +349 -0
  46. data/document/if-M6000-16E.md +652 -0
  47. data/document/if-M6000-18S.md +846 -0
  48. data/document/if-M6000-8.md +653 -0
  49. data/document/if-M6000-8E.md +653 -0
  50. data/document/if-MA5200G-8.md +357 -0
  51. data/document/if-ME60-16.md +357 -0
  52. data/document/if-ME60-X16.md +357 -0
  53. data/document/if-NE40E-X16.md +357 -0
  54. data/document/if-NE40E-X16A.md +357 -0
  55. data/document/if-NE40E-X8.md +357 -0
  56. data/document/if-NE40E.md +357 -0
  57. data/document/if-NE5000E-20.md +357 -0
  58. data/document/if-NE5000E-X16.md +357 -0
  59. data/document/if-NE5000E-X16A.md +357 -0
  60. data/document/if-NE8000E-X8.md +357 -0
  61. data/document/if-NE80E.md +357 -0
  62. data/document/if-NE8100-X8.md +357 -0
  63. data/document/if-Nokia7750.md +48 -0
  64. data/document/if-T8000-18.md +653 -0
  65. data/document/if-V6000.md +663 -0
  66. data/document/if-VNE9000.md +357 -0
  67. data/document/if-ZXCTN9000-18EA.md +762 -0
  68. data/document/if-ZXCTN9000-8EA.md +762 -0
  69. data/document/lic-M6000-16E.md +28 -0
  70. data/document/lic-M6000-18S.md +28 -0
  71. data/document/lic-M6000-8.md +28 -0
  72. data/document/lic-M6000-8E.md +28 -0
  73. data/document/lic-MA5200G-8.md +27 -0
  74. data/document/lic-ME60-16.md +27 -0
  75. data/document/lic-ME60-X16.md +27 -0
  76. data/document/lic-NE40E-X16.md +27 -0
  77. data/document/lic-NE40E-X16A.md +27 -0
  78. data/document/lic-NE40E-X8.md +27 -0
  79. data/document/log-M6000-16E.md +36 -0
  80. data/document/log-M6000-18S.md +36 -0
  81. data/document/log-M6000-8.md +36 -0
  82. data/document/log-M6000-8E.md +36 -0
  83. data/document/log-MA5200G-8.md +61 -0
  84. data/document/log-ME60-16.md +61 -0
  85. data/document/log-ME60-X16.md +61 -0
  86. data/document/log-NE40E-X16.md +61 -0
  87. data/document/log-NE40E-X16A.md +61 -0
  88. data/document/log-NE40E-X8.md +61 -0
  89. data/document/log-NE40E.md +61 -0
  90. data/document/log-NE5000E-20.md +61 -0
  91. data/document/log-NE5000E-X16.md +61 -0
  92. data/document/log-NE5000E-X16A.md +61 -0
  93. data/document/log-NE80E.md +61 -0
  94. data/document/nat-CR16010H-F.md +27 -0
  95. data/document/nat-CR16018-F.md +27 -0
  96. data/document/nat-M6000-16E.md +27 -0
  97. data/document/nat-M6000-18S.md +27 -0
  98. data/document/nat-M6000-8.md +27 -0
  99. data/document/nat-M6000-8E.md +27 -0
  100. data/document/nat-ME60-16.md +44 -0
  101. data/document/nat-ME60-X16.md +44 -0
  102. data/document/nat-NE40E-X16.md +44 -0
  103. data/document/nat-NE40E-X16A.md +44 -0
  104. data/document/policy-M6000-16E.md +13 -0
  105. data/document/policy-M6000-18S.md +13 -0
  106. data/document/policy-M6000-8.md +13 -0
  107. data/document/policy-M6000-8E.md +13 -0
  108. data/document/policy-MA5200G-8.md +87 -0
  109. data/document/policy-ME60-16.md +87 -0
  110. data/document/policy-ME60-X16.md +87 -0
  111. data/document/policy-NE40E-X16.md +87 -0
  112. data/document/policy-NE40E-X16A.md +87 -0
  113. data/document/policy-NE40E-X8.md +87 -0
  114. data/document/policy-NE40E.md +87 -0
  115. data/document/policy-NE5000E-20.md +87 -0
  116. data/document/policy-NE5000E-X16.md +87 -0
  117. data/document/policy-NE5000E-X16A.md +87 -0
  118. data/document/policy-NE80E.md +87 -0
  119. data/document/pool-M6000-16E.md +126 -0
  120. data/document/pool-M6000-18S.md +126 -0
  121. data/document/pool-M6000-8.md +126 -0
  122. data/document/pool-M6000-8E.md +126 -0
  123. data/document/pool-MA5200G-8.md +138 -0
  124. data/document/pool-ME60-16.md +138 -0
  125. data/document/pool-ME60-X16.md +138 -0
  126. data/document/pool-NE40E-X16.md +138 -0
  127. data/document/pool-NE40E-X16A.md +138 -0
  128. data/document/pool-NE40E-X8.md +138 -0
  129. data/document/pool-NE40E.md +138 -0
  130. data/document/pool-NE80E.md +138 -0
  131. data/document/static-CR16010H-F.md +60 -0
  132. data/document/static-CR16018-F.md +60 -0
  133. data/document/static-CR19000-20.md +60 -0
  134. data/document/static-CX600-X16A.md +26 -0
  135. data/document/static-CX600-X8A.md +26 -0
  136. data/document/static-M6000-16E.md +104 -0
  137. data/document/static-M6000-18S.md +104 -0
  138. data/document/static-M6000-8.md +104 -0
  139. data/document/static-M6000-8E.md +104 -0
  140. data/document/static-MA5200G-8.md +82 -0
  141. data/document/static-ME60-16.md +82 -0
  142. data/document/static-ME60-X16.md +82 -0
  143. data/document/static-NE40E-X16.md +82 -0
  144. data/document/static-NE40E-X16A.md +81 -0
  145. data/document/static-NE40E-X8.md +82 -0
  146. data/document/static-NE40E.md +67 -0
  147. data/document/static-NE5000E-20.md +67 -0
  148. data/document/static-NE5000E-X16.md +67 -0
  149. data/document/static-NE5000E-X16A.md +67 -0
  150. data/document/static-NE8000E-X8.md +26 -0
  151. data/document/static-NE80E.md +67 -0
  152. data/document/static-NE8100-X8.md +26 -0
  153. data/document/static-T8000-18.md +34 -0
  154. data/document/static-ZXCTN9000-18EA.md +34 -0
  155. data/document/static-ZXCTN9000-8EA.md +34 -0
  156. data/document/system-M6000-16E.md +75 -0
  157. data/document/system-M6000-18S.md +76 -0
  158. data/document/system-M6000-8.md +75 -0
  159. data/document/system-M6000-8E.md +75 -0
  160. data/document/system-MA5200G-8.md +51 -0
  161. data/document/system-ME60-16.md +51 -0
  162. data/document/system-ME60-X16.md +51 -0
  163. data/document/system-NE40E-X16.md +51 -0
  164. data/document/system-NE40E-X16A.md +51 -0
  165. data/document/system-NE40E-X8.md +51 -0
  166. data/document/system-NE40E.md +51 -0
  167. data/document/system-NE5000E-20.md +51 -0
  168. data/document/system-NE5000E-X16.md +51 -0
  169. data/document/system-NE5000E-X16A.md +51 -0
  170. data/document/system-NE80E.md +51 -0
  171. data/document/telnet.md +332 -0
  172. data/network.rb +24 -0
  173. data/utility/ipv4_address.rb +266 -0
  174. data/utility/ipv6_address.rb +201 -0
  175. data/utility/mac_address.rb +77 -0
  176. data/utility/netmerge.rb +46 -0
  177. data/utility/route.rb +79 -0
  178. data/utility/whitelist.rb +21 -0
  179. metadata +258 -0
@@ -0,0 +1,61 @@
1
+
2
+ # NE40E-X16 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE40E-X16', '日志']
6
+ @sign << ['NE40E-X16', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE40E_X16
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,61 @@
1
+
2
+ # NE40E-X16A 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE40E-X16A', '日志']
6
+ @sign << ['NE40E-X16A', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE40E_X16A
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,61 @@
1
+
2
+ # NE40E-X8 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE40E-X8', '日志']
6
+ @sign << ['NE40E-X8', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE40E_X8
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,61 @@
1
+
2
+ # NE40E 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE40E', '日志']
6
+ @sign << ['NE40E', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE40E
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,61 @@
1
+
2
+ # NE5000E-20 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE5000E-20', '日志']
6
+ @sign << ['NE5000E-20', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE5000E_20
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,61 @@
1
+
2
+ # NE5000E-X16 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE5000E-X16', '日志']
6
+ @sign << ['NE5000E-X16', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE5000E_X16
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,61 @@
1
+
2
+ # NE5000E-X16A 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE5000E-X16A', '日志']
6
+ @sign << ['NE5000E-X16A', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE5000E_X16A
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,61 @@
1
+
2
+ # NE80E 日志
3
+
4
+ ```ruby
5
+ @sign << ['NE80E', '日志']
6
+ @sign << ['NE80E', 'aaa下线日志']
7
+ # require 'time'
8
+
9
+ module NE80E
10
+ module_function
11
+
12
+ def 日志 logs # logs => line-texts
13
+ tab = [['time', 'alarm_type', 'alarm_id', 'alarm_lv', 'node', 'module', 'message', 'list']]
14
+ logs.each do|log|
15
+ texts = log.split(": ")
16
+ header,content = texts[0],texts[1..-1].join(': ')
17
+ headers = header.split(' ')
18
+ timetag, node, source = headers[0..-3].join(' '),headers[-2], headers[-1]
19
+
20
+ time, src = Time.parse(timetag).strftime("%Y-%m-%d %H:%M:%S"),source.strip
21
+ mod, alarm_lv, mtype = src.split("/")
22
+ alarm_type = mtype.split("[")[0]
23
+ alarm_id = mtype.split("[")[1].to_s.split("]")[0].to_s
24
+
25
+ if content.include?("(")
26
+ message = content.split("(")[0]
27
+ list = content.split("(")[1].split(")")[0]
28
+ else
29
+ message = content
30
+ list = ""
31
+ end
32
+
33
+ tab << [time, alarm_type, alarm_id, alarm_lv, node, mod, message, list]
34
+ end
35
+ return tab
36
+ end
37
+
38
+ def aaa下线日志 rawlog
39
+ records = [['username','ipaddr','mac','interface','pvlan','cvlan','login-time','offline-time','reason']]
40
+ log = rawlog.split("--------------------------------------------------------------------------------\n")[1..-2]
41
+ log.each do|part|
42
+ next if part==''
43
+ begin
44
+ username = part.split("Username:")[1].split(" ")[0].strip
45
+ mac = part.split("MAC:")[1].split("\n")[0].strip
46
+ interface = part.split("Interface:")[1].split(" ")[0].strip
47
+ vlanid = part.split(" VlanID:")[1].split(" ")[0].strip
48
+ svlanid = part.split("SecondVlanID:")[1].split("\n")[0].strip
49
+ ipaddress = part.split("IpAddress:")[1].split("\n")[0].strip
50
+ logintime = part.split("LoginTime:")[1].split("\n")[0].strip
51
+ offlinetime = part.split("OfflineTime:")[1].split("\n")[0].strip
52
+ reason = part.split("OfflineReason:")[1].split("\n")[0].strip
53
+ records << [username, ipaddress, mac, interface, vlanid, svlanid, logintime, offlinetime, reason]
54
+ rescue
55
+ p part
56
+ end
57
+ end
58
+ return records
59
+ end
60
+ end
61
+ ```
@@ -0,0 +1,27 @@
1
+
2
+ # CR16010H-F NAT
3
+
4
+ ```ruby
5
+ @sign << ['CR16010H-F', '流量解析']
6
+
7
+ module CR16010H_F
8
+ module_function
9
+
10
+ def 流量解析 统计回显
11
+ slots = 统计回显.match_paragraph("\nCPU ","\n Peak time:")
12
+ records = []
13
+ slots.each do|slot|
14
+ lines = slot.split("\n")
15
+ slot_name = lines[0].split('on ').last.split(':').first.gsub(' ','')
16
+ record = [slot_name] # [slot_name, input, output, band]
17
+ lines.each do|line|
18
+ record[1] = (line.split(',').last.split('bytes').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('input rate')
19
+ record[2] = (line.split(',').last.split('bytes').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('output rate')
20
+ record[3] = line.split(':').last.strip if line.include?('Bandwidth use ratio')
21
+ end
22
+ records << record if record.size > 1
23
+ end
24
+ records
25
+ end
26
+ end
27
+ ```
@@ -0,0 +1,27 @@
1
+
2
+ # CR16018-F NAT
3
+
4
+ ```ruby
5
+ @sign << ['CR16018-F', '流量解析']
6
+
7
+ module CR16018_F
8
+ module_function
9
+
10
+ def 流量解析 统计回显
11
+ slots = 统计回显.split("\nSlot ").select{|s|s.include?("Peak time: ")}
12
+ records = []
13
+ slots.each do|slot|
14
+ lines = slot.split("\n")
15
+ slot_name = 'slot'+lines[0].split(':').first.strip
16
+ record = [slot_name] # [slot_name, input, output, band]
17
+ lines.each do|line|
18
+ record[1] = (line.split(',').last.split('bytes').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('input rate')
19
+ record[2] = (line.split(',').last.split('bytes').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('output rate')
20
+ record[3] = line.split(':').last.strip if line.include?('Bandwidth use ratio')
21
+ end
22
+ records << record if record.size > 1
23
+ end
24
+ records
25
+ end
26
+ end
27
+ ```
@@ -0,0 +1,27 @@
1
+
2
+ # M6000-16E NAT
3
+
4
+ ```ruby
5
+ @sign << ['M6000-16E', '流量解析']
6
+
7
+ module M6000_16E
8
+ module_function
9
+
10
+ def 流量解析 统计回显
11
+ spi_intfs = 统计回显.match_paragraph("\nspi-","\n E_Bytes")
12
+ records = []
13
+ spi_intfs.each do|spi_intf|
14
+ lines = spi_intf.split("\n")
15
+ spi_name = "spi-"+lines[0].split(' ').first
16
+ record = [spi_name] # [spi_name, input, output, band]
17
+ lines.each do|line|
18
+ record[1] = (line.split(':').last.split('Bps').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('input rate')
19
+ record[2] = (line.split(':').last.split('Bps').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('output rate')
20
+ record[3] = line.split('BW ').last.split(' ').first.to_i/1000_000 if line.include?(' BW')
21
+ end
22
+ records << record if record.size > 1
23
+ end
24
+ records
25
+ end
26
+ end
27
+ ```
@@ -0,0 +1,27 @@
1
+
2
+ # M6000-18S NAT
3
+
4
+ ```ruby
5
+ @sign << ['M6000-18S', '流量解析']
6
+
7
+ module M6000_18S
8
+ module_function
9
+
10
+ def 流量解析 统计回显
11
+ spi_intfs = 统计回显.match_paragraph("\nspi-","\n E_PktsDrop")
12
+ records = []
13
+ spi_intfs.each do|spi_intf|
14
+ lines = spi_intf.split("\n")
15
+ spi_name = "spi-"+lines[0].split(' ').first
16
+ record = [spi_name] # [spi_name, input, output, band]
17
+ lines.each do|line|
18
+ record[1] = (line.split(':').last.split(' bit/s').first.to_f/(1024*1024*1024)).round(2) if line.include?('Input') && !line.include?('peak time')
19
+ record[2] = (line.split(':').last.split(' bit/s').first.to_f/(1024*1024*1024)).round(2) if line.include?('Output') && !line.include?('peak time')
20
+ record[3] = line.split('BW ').last.split(' ').first.to_i if line.include?(' BW')
21
+ end
22
+ records << record if record.size > 1
23
+ end
24
+ records
25
+ end
26
+ end
27
+ ```
@@ -0,0 +1,27 @@
1
+
2
+ # M6000-8 NAT
3
+
4
+ ```ruby
5
+ @sign << ['M6000-8', '流量解析']
6
+
7
+ module M6000_8
8
+ module_function
9
+
10
+ def 流量解析 统计回显
11
+ spi_intfs = 统计回显.match_paragraph("\nspi-","\n E_Bytes")
12
+ records = []
13
+ spi_intfs.each do|spi_intf|
14
+ lines = spi_intf.split("\n")
15
+ spi_name = "spi-"+lines[0].split(' ').first
16
+ record = [spi_name] # [spi_name, input, output, band]
17
+ lines.each do|line|
18
+ record[1] = (line.split(':').last.split('Bps').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('input rate')
19
+ record[2] = (line.split(':').last.split('Bps').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('output rate')
20
+ record[3] = (line.split('BW ').last.split(' ').first.to_f/1000_000).round(2) if line.include?(' BW')
21
+ end
22
+ records << record if record.size > 1
23
+ end
24
+ records
25
+ end
26
+ end
27
+ ```
@@ -0,0 +1,27 @@
1
+
2
+ # M6000-8E NAT
3
+
4
+ ```ruby
5
+ @sign << ['M6000-8E', '流量解析']
6
+
7
+ module M6000_8E
8
+ module_function
9
+
10
+ def 流量解析 统计回显
11
+ spi_intfs = 统计回显.match_paragraph("\nspi-","\n E_Bytes")
12
+ records = []
13
+ spi_intfs.each do|spi_intf|
14
+ lines = spi_intf.split("\n")
15
+ spi_name = "spi-"+lines[0].split(' ').first
16
+ record = [spi_name] # [spi_name, input, output, band]
17
+ lines.each do|line|
18
+ record[1] = (line.split(':').last.split('Bps').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('input rate')
19
+ record[2] = (line.split(':').last.split('Bps').first.to_f*8/(1024*1024*1024)).round(2) if line.include?('output rate')
20
+ record[3] = line.split('BW ').last.split(' ').first.to_i/1000_000 if line.include?(' BW')
21
+ end
22
+ records << record if record.size > 1
23
+ end
24
+ records
25
+ end
26
+ end
27
+ ```