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.
- checksums.yaml +7 -0
- data/README.md +2 -0
- data/document/acl-M6000-16E.md +27 -0
- data/document/acl-M6000-18S.md +27 -0
- data/document/acl-M6000-8.md +27 -0
- data/document/acl-M6000-8E.md +27 -0
- data/document/acl-MA5200G-8.md +204 -0
- data/document/acl-ME60-16.md +177 -0
- data/document/acl-ME60-X16.md +177 -0
- data/document/acl-NE40E-X16.md +204 -0
- data/document/acl-NE40E-X16A.md +204 -0
- data/document/acl-NE40E-X8.md +204 -0
- data/document/acl-NE40E.md +204 -0
- data/document/acl-NE5000E-20.md +25 -0
- data/document/acl-NE5000E-X16.md +25 -0
- data/document/acl-NE5000E-X16A.md +25 -0
- data/document/acl-NE80E.md +204 -0
- data/document/bgp-CR16010H-F.md +25 -0
- data/document/bgp-CR16018-F.md +25 -0
- data/document/bgp-CR19000-20.md +25 -0
- data/document/bgp-M6000-16E.md +25 -0
- data/document/bgp-M6000-18S.md +25 -0
- data/document/bgp-M6000-8.md +25 -0
- data/document/bgp-M6000-8E.md +25 -0
- data/document/bgp-MA5200G-8.md +25 -0
- data/document/bgp-ME60-16.md +25 -0
- data/document/bgp-ME60-X16.md +25 -0
- data/document/bgp-NE40E-X16.md +25 -0
- data/document/bgp-NE40E-X16A.md +25 -0
- data/document/bgp-NE40E-X8.md +25 -0
- data/document/bgp-NE40E.md +25 -0
- data/document/bgp-NE5000E-20.md +25 -0
- data/document/bgp-NE5000E-X16.md +25 -0
- data/document/bgp-NE5000E-X16A.md +25 -0
- data/document/bgp-NE80E.md +25 -0
- data/document/config.md +1153 -0
- data/document/document.rb +27 -0
- data/document/if-ALCATEL7750.md +48 -0
- data/document/if-C7609.md +47 -0
- data/document/if-CR16010H-F.md +300 -0
- data/document/if-CR16018-F.md +300 -0
- data/document/if-CR19000-20.md +300 -0
- data/document/if-CRS-16.md +47 -0
- data/document/if-CX600-X16A.md +349 -0
- data/document/if-CX600-X8A.md +349 -0
- data/document/if-M6000-16E.md +652 -0
- data/document/if-M6000-18S.md +846 -0
- data/document/if-M6000-8.md +653 -0
- data/document/if-M6000-8E.md +653 -0
- data/document/if-MA5200G-8.md +357 -0
- data/document/if-ME60-16.md +357 -0
- data/document/if-ME60-X16.md +357 -0
- data/document/if-NE40E-X16.md +357 -0
- data/document/if-NE40E-X16A.md +357 -0
- data/document/if-NE40E-X8.md +357 -0
- data/document/if-NE40E.md +357 -0
- data/document/if-NE5000E-20.md +357 -0
- data/document/if-NE5000E-X16.md +357 -0
- data/document/if-NE5000E-X16A.md +357 -0
- data/document/if-NE8000E-X8.md +357 -0
- data/document/if-NE80E.md +357 -0
- data/document/if-NE8100-X8.md +357 -0
- data/document/if-Nokia7750.md +48 -0
- data/document/if-T8000-18.md +653 -0
- data/document/if-V6000.md +663 -0
- data/document/if-VNE9000.md +357 -0
- data/document/if-ZXCTN9000-18EA.md +762 -0
- data/document/if-ZXCTN9000-8EA.md +762 -0
- data/document/lic-M6000-16E.md +28 -0
- data/document/lic-M6000-18S.md +28 -0
- data/document/lic-M6000-8.md +28 -0
- data/document/lic-M6000-8E.md +28 -0
- data/document/lic-MA5200G-8.md +27 -0
- data/document/lic-ME60-16.md +27 -0
- data/document/lic-ME60-X16.md +27 -0
- data/document/lic-NE40E-X16.md +27 -0
- data/document/lic-NE40E-X16A.md +27 -0
- data/document/lic-NE40E-X8.md +27 -0
- data/document/log-M6000-16E.md +36 -0
- data/document/log-M6000-18S.md +36 -0
- data/document/log-M6000-8.md +36 -0
- data/document/log-M6000-8E.md +36 -0
- data/document/log-MA5200G-8.md +61 -0
- data/document/log-ME60-16.md +61 -0
- data/document/log-ME60-X16.md +61 -0
- data/document/log-NE40E-X16.md +61 -0
- data/document/log-NE40E-X16A.md +61 -0
- data/document/log-NE40E-X8.md +61 -0
- data/document/log-NE40E.md +61 -0
- data/document/log-NE5000E-20.md +61 -0
- data/document/log-NE5000E-X16.md +61 -0
- data/document/log-NE5000E-X16A.md +61 -0
- data/document/log-NE80E.md +61 -0
- data/document/nat-CR16010H-F.md +27 -0
- data/document/nat-CR16018-F.md +27 -0
- data/document/nat-M6000-16E.md +27 -0
- data/document/nat-M6000-18S.md +27 -0
- data/document/nat-M6000-8.md +27 -0
- data/document/nat-M6000-8E.md +27 -0
- data/document/nat-ME60-16.md +44 -0
- data/document/nat-ME60-X16.md +44 -0
- data/document/nat-NE40E-X16.md +44 -0
- data/document/nat-NE40E-X16A.md +44 -0
- data/document/policy-M6000-16E.md +13 -0
- data/document/policy-M6000-18S.md +13 -0
- data/document/policy-M6000-8.md +13 -0
- data/document/policy-M6000-8E.md +13 -0
- data/document/policy-MA5200G-8.md +87 -0
- data/document/policy-ME60-16.md +87 -0
- data/document/policy-ME60-X16.md +87 -0
- data/document/policy-NE40E-X16.md +87 -0
- data/document/policy-NE40E-X16A.md +87 -0
- data/document/policy-NE40E-X8.md +87 -0
- data/document/policy-NE40E.md +87 -0
- data/document/policy-NE5000E-20.md +87 -0
- data/document/policy-NE5000E-X16.md +87 -0
- data/document/policy-NE5000E-X16A.md +87 -0
- data/document/policy-NE80E.md +87 -0
- data/document/pool-M6000-16E.md +126 -0
- data/document/pool-M6000-18S.md +126 -0
- data/document/pool-M6000-8.md +126 -0
- data/document/pool-M6000-8E.md +126 -0
- data/document/pool-MA5200G-8.md +138 -0
- data/document/pool-ME60-16.md +138 -0
- data/document/pool-ME60-X16.md +138 -0
- data/document/pool-NE40E-X16.md +138 -0
- data/document/pool-NE40E-X16A.md +138 -0
- data/document/pool-NE40E-X8.md +138 -0
- data/document/pool-NE40E.md +138 -0
- data/document/pool-NE80E.md +138 -0
- data/document/static-CR16010H-F.md +60 -0
- data/document/static-CR16018-F.md +60 -0
- data/document/static-CR19000-20.md +60 -0
- data/document/static-CX600-X16A.md +26 -0
- data/document/static-CX600-X8A.md +26 -0
- data/document/static-M6000-16E.md +104 -0
- data/document/static-M6000-18S.md +104 -0
- data/document/static-M6000-8.md +104 -0
- data/document/static-M6000-8E.md +104 -0
- data/document/static-MA5200G-8.md +82 -0
- data/document/static-ME60-16.md +82 -0
- data/document/static-ME60-X16.md +82 -0
- data/document/static-NE40E-X16.md +82 -0
- data/document/static-NE40E-X16A.md +81 -0
- data/document/static-NE40E-X8.md +82 -0
- data/document/static-NE40E.md +67 -0
- data/document/static-NE5000E-20.md +67 -0
- data/document/static-NE5000E-X16.md +67 -0
- data/document/static-NE5000E-X16A.md +67 -0
- data/document/static-NE8000E-X8.md +26 -0
- data/document/static-NE80E.md +67 -0
- data/document/static-NE8100-X8.md +26 -0
- data/document/static-T8000-18.md +34 -0
- data/document/static-ZXCTN9000-18EA.md +34 -0
- data/document/static-ZXCTN9000-8EA.md +34 -0
- data/document/system-M6000-16E.md +75 -0
- data/document/system-M6000-18S.md +76 -0
- data/document/system-M6000-8.md +75 -0
- data/document/system-M6000-8E.md +75 -0
- data/document/system-MA5200G-8.md +51 -0
- data/document/system-ME60-16.md +51 -0
- data/document/system-ME60-X16.md +51 -0
- data/document/system-NE40E-X16.md +51 -0
- data/document/system-NE40E-X16A.md +51 -0
- data/document/system-NE40E-X8.md +51 -0
- data/document/system-NE40E.md +51 -0
- data/document/system-NE5000E-20.md +51 -0
- data/document/system-NE5000E-X16.md +51 -0
- data/document/system-NE5000E-X16A.md +51 -0
- data/document/system-NE80E.md +51 -0
- data/document/telnet.md +332 -0
- data/network.rb +24 -0
- data/utility/ipv4_address.rb +266 -0
- data/utility/ipv6_address.rb +201 -0
- data/utility/mac_address.rb +77 -0
- data/utility/netmerge.rb +46 -0
- data/utility/route.rb +79 -0
- data/utility/whitelist.rb +21 -0
- 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
|
+
```
|