class Snmp2mkr::Snmp

Wrapper of SNMP::Manager for future implementation change

Attributes

mib[R]

Public Class Methods

default_mib() click to toggle source
# File lib/snmp2mkr/snmp.rb, line 11
def self.default_mib; @default_mib ||= Mib.new; end
default_mib=(o) click to toggle source
# File lib/snmp2mkr/snmp.rb, line 12
def self.default_mib=(o); @default_mib = o; end
open(*args) { |conn| ... } click to toggle source
# File lib/snmp2mkr/snmp.rb, line 14
def self.open(*args)
  conn = new(*args)
  return conn unless block_given?

  begin
    yield conn
  ensure
    conn.close
  end
end

Public Instance Methods

close() click to toggle source
# File lib/snmp2mkr/snmp.rb, line 32
def close
  @manager.close
  @manager = nil
end
closed?() click to toggle source
# File lib/snmp2mkr/snmp.rb, line 37
def closed?
  @manager.nil?
end
get(*oids_) { |varbind(oid(name.to_a, mib: mib), value)| ... } click to toggle source
# File lib/snmp2mkr/snmp.rb, line 41
def get(*oids_)
  raise Closed if closed?
  return to_enum(__method__, *oids_) unless block_given?

  oids = oids_.flatten.map(&:to_s)
  oids.each_slice(8) do |slice|
    @manager.get(slice).varbind_list.each do |varbind|
      yield Varbind.new(Snmp2mkr::Oid.new(varbind.name.to_a, mib: mib), varbind.value)
    end
  end
end
subtree(oid_) { |vb| ... } click to toggle source
# File lib/snmp2mkr/snmp.rb, line 53
def subtree(oid_)
  raise Closed if closed?
  return to_enum(__method__, oid_) unless block_given?

  oid = oid_.kind_of?(Snmp2mkr::Oid) ? oid_ : Snmp2mkr::Oid.new(mib.name_to_oid(oid_), name: oid_.to_s)
  pointer = oid

  while pointer
    @manager.get_bulk(0, 20, pointer.to_s).varbind_list.each do |varbind|
      if varbind == SNMP::EndOfMibView
        pointer = nil
        break
      end

      vb = Varbind.new(Snmp2mkr::Oid.new(varbind.name.to_a, mib: mib), varbind.value)
      unless oid.subtree?(vb.oid)
        pointer = nil
        break
      end

      yield vb

      pointer = vb.oid
    end
  end

  nil
end