require 'rubygems' gem 'snmp' require 'snmp' require 'trango5800ap' host = ARGV[0] || 'localhost' class Device attr_accessor :manager def walk(*args) h = {} @manager.walk(args) do |row| ary = [] row.each { |vb| h[vb.name.to_s] = vb.value } end h end end class Poller attr_accessor :type def initialize(type, manager) @type = type.new @type.manager = manager end def method_missing(mid, *args) @type.method(mid).call(*args) end end manager = SNMP::Manager.new(:Host => host, :Port => 161, :Community => "hsfxtest23", :Version => :SNMPv1) poll = Poller.new(Device, manager) p poll.walk(Trango5800AP::APSYSHW, Trango5800AP::APSYSFW)["1.3.6.1.4.1.5454.1.10.1.1.2.0"] p poll.walk(Trango5800AP::APSYSHW, Trango5800AP::APSYSFW)[Trango5800AP::APSYSFW] ## Trango5800AP::APSYSHW and Trango5800AP::APSYSFW are built up using multiple values. I.e., ## module Trango5800AP; A = "1.3.6.1.4.1.5454"; APSYSFW = A + ".1.10.1.1.2.0"