class Apscanner::SnmpParser
Public Class Methods
new(response, type)
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 3 def initialize(response, type) @response = response @type = type @oids = SnmpManager::SNMP_OID[type] end
Public Instance Methods
run()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 9 def run send("parse_#{@type}") end
Private Instance Methods
clients()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 52 def clients @response[@oids[:clients]] end
macs()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 44 def macs @response[@oids[:mac]] end
names()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 48 def names @response[@oids[:name]] end
parse()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 29 def parse macs.map do |oid, value| ap_oid = parse_ap_oid(oid) AccessPoint.new( name: names[@oids[:name] + '.' + ap_oid], mac_address: parse_mac(value), clients: clients[@oids[:clients] + '.' + ap_oid] ) if status_up?(ap_oid) end.compact end
parse_ap_oid(oid)
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 40 def parse_ap_oid(oid) oid.gsub("#{@oids[:mac]}.", '') end
parse_mac(mac)
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 65 def parse_mac(mac) mac.unpack('H2H2H2H2H2H2').join(':').upcase end
parse_meraki()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 19 def parse_meraki @response = { @oids[:mac] => sys.select { |k, _| k.include?("#{@oids[:mac]}.") }, @oids[:name] => sys.select { |k, _| k.include?("#{@oids[:name]}.") }, @oids[:clients] => sys.select { |k, _| k.include?("#{@oids[:clients]}.") }, @oids[:status] => sys.select { |k, _| k.include?("#{@oids[:status]}.") } } parse end
parse_wlc()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 15 def parse_wlc parse end
status_up?(ap_oid)
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 60 def status_up?(ap_oid) return true if @response[@oids[:status]].nil? @response[@oids[:status]][@oids[:status] + '.' + ap_oid] == 1 end
sys()
click to toggle source
# File lib/apscanner/entities/snmp_parser.rb, line 56 def sys @response[@oids[:system]] end