class SNMPTransport

Attributes

host[RW]
manager[RW]

Public Class Methods

new(host, community = 'public') click to toggle source
# File lib/arpdb/snmp_transport.rb, line 7
def initialize(host, community = 'public')
  @host = host
  @manager = SNMP::Manager.new(host: host, community: community, mib_modules: [], retries: 1)
end

Public Instance Methods

get(oid) click to toggle source
# File lib/arpdb/snmp_transport.rb, line 24
def get(oid)
  manager.get(oid).each_varbind { |vb| return decode_value(vb) }
end
walk(oids) click to toggle source
# File lib/arpdb/snmp_transport.rb, line 12
def walk(oids)
  result = Array.new
  manager.walk(oids) do |snmp_row|
    row = Array.new
    snmp_row.each do |vb|
      row << decode_value(vb)
    end
    result << row
  end
  result
end

Private Instance Methods

decode_value(vb) click to toggle source
# File lib/arpdb/snmp_transport.rb, line 30
def decode_value(vb)
  # Absolutely ugly hack to decide if value needs to be unpacked.
  # Add OIDs known to return packed/binary data here.
  # Please recommend correct solution for this.
  if vb.name.to_s =~ /1\.3\.6\.1\.2\.1\.4\.22\.1\.2/
    vb.value.unpack('H*').first
  else
    vb.value.to_s
  end
end