netdisco 0.0.5 → 0.0.8
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 +4 -4
- data/lib/netdisco/cli.rb +1 -1
- data/lib/netdisco/config.rb +2 -2
- data/lib/netdisco/dns.rb +4 -3
- data/lib/netdisco/method/cdp.rb +9 -9
- data/lib/netdisco/method/xdp.rb +0 -1
- data/lib/netdisco/name_map.rb +7 -0
- data/lib/netdisco/snmp.rb +5 -3
- data/lib/netdisco/version.rb +1 -1
- data/lib/netdisco.rb +2 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16f405c4657e51cf5421806990865bd05c46bc2a887e7ac022897f643449879a
|
4
|
+
data.tar.gz: 801394ad4dfcea976618f1f5b3af828037ee15e2aef7c4ccc93d93cacd6e6ccc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2838bd2e666ebc42f955cff1237f7c10bd498a6b465fa17cfd2598de86916a529af9b2aa403f5ebf62222edc885df38a2b2f926dc86628504215928755cf78cf
|
7
|
+
data.tar.gz: 933cb0a3bac7681e1ce452817ec02317565eddefdd3e631a4c08da13fa1573854b26af7ee027501ac1adf31fba2a298e99c2eb71efe8dcce54aa13de8633b2e9
|
data/lib/netdisco/cli.rb
CHANGED
data/lib/netdisco/config.rb
CHANGED
@@ -26,8 +26,8 @@ class Netdisco
|
|
26
26
|
CONFIG.default.log = "STDERR"
|
27
27
|
CONFIG.default.debug = true
|
28
28
|
CONFIG.default.name_map = [ # regexp match+sub of hostname (needed for LLDP)
|
29
|
-
['
|
30
|
-
["^
|
29
|
+
['-\d+', ""],
|
30
|
+
["^(.*(?<!mojo.local)$)", '\1.mojo.local'], # adds missing domain name
|
31
31
|
]
|
32
32
|
# 加载配置并设置对应常量
|
33
33
|
CONFIG.load
|
data/lib/netdisco/dns.rb
CHANGED
@@ -27,7 +27,7 @@ class Netdisco
|
|
27
27
|
@cache_ip[name] = Resolv.getaddress name
|
28
28
|
end
|
29
29
|
rescue StandardError => e
|
30
|
-
Log.debug "DNS resolution for '#{name}' raised error '#{e.class}' with message '#{e.message}'"
|
30
|
+
Log.debug "DNS resolution/getip for '#{name}' raised error '#{e.class}' with message '#{e.message}'"
|
31
31
|
nil
|
32
32
|
end
|
33
33
|
end
|
@@ -42,9 +42,10 @@ class Netdisco
|
|
42
42
|
else
|
43
43
|
begin
|
44
44
|
@cache_name[ip] = Resolv.getname ip
|
45
|
-
rescue
|
46
|
-
Log.debug "DNS resolution for '#{ip}' raised error '#{e.class}' with message '#{e.message}'"
|
45
|
+
rescue StandardError => e
|
46
|
+
Log.debug "DNS resolution/getname for '#{ip}' raised error '#{e.class}' with message '#{e.message}'"
|
47
47
|
@cache_name[ip] = ip
|
48
|
+
ip
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
data/lib/netdisco/method/cdp.rb
CHANGED
@@ -18,16 +18,16 @@ class Netdisco
|
|
18
18
|
def make_peers
|
19
19
|
peers = []
|
20
20
|
@mib.by_oid(PEERS_BY).each do |_, vb|
|
21
|
-
peer
|
22
|
-
peer_id
|
23
|
-
peer.oid
|
24
|
-
peer.raw_ip
|
21
|
+
peer = Peer.new
|
22
|
+
peer_id = vb.oid_id(PEERS_BY)
|
23
|
+
peer.oid = get_oid_hash(peer_id)
|
24
|
+
peer.raw_ip = @mib[OID[:cdpCacheAddress], peer_id].as_ip rescue peer.ip
|
25
25
|
peer.raw_name = @mib[OID[:cdpCacheDeviceId], peer_id].value
|
26
|
-
|
27
|
-
peer.
|
28
|
-
peer.src
|
29
|
-
peer.
|
30
|
-
peer.raw_ip
|
26
|
+
# 修正设备命名
|
27
|
+
peer.ip = get_ip(peer.raw_ip, peer.raw_name)
|
28
|
+
peer.src = @mib[OID[:cdpInterfaceName], peer_id.first].value rescue nil
|
29
|
+
peer.dst = @mib[OID[:cdpCacheDevicePort], peer_id].value rescue nil
|
30
|
+
# peer.raw_ip = @mib[OID[:cdpCacheAddress], peer_id].value
|
31
31
|
peers << peer
|
32
32
|
end
|
33
33
|
peers
|
data/lib/netdisco/method/xdp.rb
CHANGED
data/lib/netdisco/name_map.rb
CHANGED
@@ -4,6 +4,13 @@ class Netdisco
|
|
4
4
|
module NameMap
|
5
5
|
def name_map(origin_name)
|
6
6
|
name = origin_name.dup
|
7
|
+
# 早期异常拦截
|
8
|
+
if name.nil?
|
9
|
+
Log.debug "Netdisco name_map origin_name is nil"
|
10
|
+
return nil
|
11
|
+
end
|
12
|
+
|
13
|
+
# 字典替换
|
7
14
|
CFG.name_map.each do |match, replace|
|
8
15
|
re = Regexp.new match
|
9
16
|
name = name.sub re, replace
|
data/lib/netdisco/snmp.rb
CHANGED
@@ -44,14 +44,16 @@ class Netdisco
|
|
44
44
|
# 初始化变量
|
45
45
|
last, oid, results = false, root.dup, []
|
46
46
|
# 将点分10进制字串转换为数组对象
|
47
|
-
root = root.split(".").map { |chr| chr.to_i }
|
47
|
+
# root = root.split(".").map { |chr| chr.to_i }
|
48
|
+
|
48
49
|
# 遍历 root_oid
|
49
50
|
until last
|
50
51
|
vbs = snmp(:get_bulk, 0, CFG.snmp.bulkrows, oid).varbind_list
|
51
52
|
vbs.each do |vb|
|
52
|
-
oid = vb.
|
53
|
+
oid = vb.name.to_str
|
53
54
|
# 解析到的 oid 不匹配 root 跳出循环
|
54
|
-
(last = true; break) unless oid
|
55
|
+
(last = true; break) unless oid.match?(/^#{Regexp.quote(root)}/)
|
56
|
+
# (last = true; break) unless oid[0..root.size - 1] == root
|
55
57
|
results << vb
|
56
58
|
end
|
57
59
|
end
|
data/lib/netdisco/version.rb
CHANGED
data/lib/netdisco.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netdisco
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WENWU.YAN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: snmp
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.0.
|
47
|
+
version: 0.0.5
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0.
|
54
|
+
version: 0.0.5
|
55
55
|
description: Netdisco is working for network snmp discovery
|
56
56
|
email:
|
57
57
|
- careline@foxmail.com
|