apscanner 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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