apscanner 1.1.0 → 1.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b33cb59b6b8ec81b5980993dc67d4ea78cf7994e
4
- data.tar.gz: d18e543c5ac23b6a7dc39ebcde258695e6344ebf
3
+ metadata.gz: ff7fe385aa5ee3fcc9511aff2202e711281cc4ff
4
+ data.tar.gz: 101e0587e6d965b4ce1614d94c271223921ec128
5
5
  SHA512:
6
- metadata.gz: fc2bc9d0510fe82bdae6aabf99f780a5d695910150da244d9af474a5cfd309b959bc5a43ef618869b12482a610d6104f834854978a0c37ad474e517001914254
7
- data.tar.gz: f28722c4d72b17c434d497597632aa34f2f97142748c4c526139d82e99e7a805b520425bd68c996bff0e82405b67876852fc821d0011e72f8b060cce9d818ddf
6
+ metadata.gz: aa8ac437df3d436ea63cf841a2a5ce574111a6426ca0aebe9e1884f839af37a4acdc89e06dd13e4298db8d4b73065a4e287b5c06b061acf8b2e691de5dc369b2
7
+ data.tar.gz: c9708e9a8a638c4030a75a8a9cba2aacf7953dedf164264737f57fb383ee7bf88257812c47a6192b3ed345ebfc07901e6ae31b65d632ad6e58e45187cfbb082d
@@ -1,9 +1,10 @@
1
1
  module Apscanner
2
2
  class AccessPoint
3
- attr_reader :name, :mac_address
3
+ attr_reader :name, :mac_address, :clients
4
4
 
5
5
  def initialize(options = {})
6
6
  @name = options[:name]
7
+ @clients = options[:clients]
7
8
  @mac_address = options[:mac_address]
8
9
  end
9
10
 
@@ -8,7 +8,7 @@ module Apscanner
8
8
  @ip_address = options[:ip_address]
9
9
  @community = options[:community]
10
10
  @uuid = options[:uuid]
11
- @type = options[:type]
11
+ @type = options[:type].to_sym
12
12
  @access_points = []
13
13
  end
14
14
 
@@ -3,12 +3,15 @@ module Apscanner
3
3
  SNMP_OID = {
4
4
  wlc: {
5
5
  name: '1.3.6.1.4.1.9.9.513.1.1.1.1.5',
6
- mac: '1.3.6.1.4.1.9.9.513.1.1.1.1.2'
6
+ mac: '1.3.6.1.4.1.9.9.513.1.1.1.1.2',
7
+ clients: '1.3.6.1.4.1.9.9.513.1.1.1.1.54'
7
8
  },
8
9
  meraki: {
9
10
  system: '1.3.6.1.4.1.29671.1.1.4.1',
10
11
  mac: '1.3.6.1.4.1.29671.1.1.4.1.1',
11
- name: '1.3.6.1.4.1.29671.1.1.4.1.2'
12
+ name: '1.3.6.1.4.1.29671.1.1.4.1.2',
13
+ status: '1.3.6.1.4.1.29671.1.1.4.1.3',
14
+ clients: '1.3.6.1.4.1.29671.1.1.4.1.5'
12
15
  }
13
16
  }.freeze
14
17
 
@@ -17,26 +17,49 @@ module Apscanner
17
17
  end
18
18
 
19
19
  def parse_meraki
20
- parsed_response = {
21
- @oids[:mac] => @response[@oids[:system]].select do |k, _|
22
- k.include?("#{@oids[:mac]}.")
23
- end,
24
- @oids[:name] => @response[@oids[:system]].select do |k, _|
25
- k.include?("#{@oids[:name]}.")
26
- end
20
+ @response = {
21
+ @oids[:mac] => sys.select { |k, _| k.include?("#{@oids[:mac]}.") },
22
+ @oids[:name] => sys.select { |k, _| k.include?("#{@oids[:name]}.") },
23
+ @oids[:clients] => sys.select { |k, _| k.include?("#{@oids[:clients]}.") },
24
+ @oids[:status] => sys.select { |k, _| k.include?("#{@oids[:status]}.") }
27
25
  }
28
- @response = parsed_response
29
26
  parse
30
27
  end
31
28
 
32
29
  def parse
33
- @response[@oids[:mac]].map do |oid, value|
34
- ap_oid = oid.gsub("#{@oids[:mac]}.", '')
30
+ macs.map do |oid, value|
31
+ ap_oid = parse_ap_oid(oid)
35
32
  AccessPoint.new(
36
- name: @response[@oids[:name]][@oids[:name] + '.' + ap_oid],
37
- mac_address: parse_mac(value)
38
- )
39
- end
33
+ name: names[@oids[:name] + '.' + ap_oid],
34
+ mac_address: parse_mac(value),
35
+ clients: clients[@oids[:clients] + '.' + ap_oid]
36
+ ) if status_up?(ap_oid)
37
+ end.compact
38
+ end
39
+
40
+ def parse_ap_oid(oid)
41
+ oid.gsub("#{@oids[:mac]}.", '')
42
+ end
43
+
44
+ def macs
45
+ @response[@oids[:mac]]
46
+ end
47
+
48
+ def names
49
+ @response[@oids[:name]]
50
+ end
51
+
52
+ def clients
53
+ @response[@oids[:clients]]
54
+ end
55
+
56
+ def sys
57
+ @response[@oids[:system]]
58
+ end
59
+
60
+ def status_up?(ap_oid)
61
+ return true if @response[@oids[:status]].nil?
62
+ @response[@oids[:status]][@oids[:status] + '.' + ap_oid] == 1
40
63
  end
41
64
 
42
65
  def parse_mac(mac)
@@ -1,3 +1,3 @@
1
1
  module Apscanner
2
- VERSION = '1.1.0'.freeze
2
+ VERSION = '1.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apscanner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julio J Garcia Perez