Sha256: 05283345b7fd99ef975131967624ad568f1a8077eed26545c457b83f18f6f2e7
Contents?: true
Size: 1.71 KB
Versions: 3
Compression:
Stored size: 1.71 KB
Contents
# # Copyright (c) 2004 David R. Halliday # All rights reserved. # # This SNMP library is free software. Redistribution is permitted under the # same terms and conditions as the standard Ruby distribution. See the # COPYING file in the Ruby distribution for details. # require 'snmp' require 'socket' require 'logger' module SNMP class Agent #:nodoc:all def initialize(listen_port=161, max_packet=8000) @log = Logger.new(STDOUT) @log.level = Logger::DEBUG @max_packet = max_packet @socket = UDPSocket.open @socket.bind(nil, listen_port) @mib = MIB::SystemMIB.new end def start @log.info "SNMP agent running" loop do begin data, remote_info = @socket.recvfrom(@max_packet) puts "Received #{data.length} bytes" p data message = Message.decode(data) case message.pdu when GetRequest response = message.response response.pdu.varbind_list.each do |v| v.value = @mib.get(v.name) end when SetRequest response = message.response else raise "invalid message #{message.to_s}" end puts "Responding to #{remote_info[3]}:#{remote_info[1]}" encoded_message = response.encode n=@socket.send(encoded_message, 0, remote_info[3], remote_info[1]) p encoded_message rescue => e @log.error e shutdown end end end def shutdown @log.info "SNMP agent stopping" @socket.close exit end alias stop :shutdown end end if $0 == __FILE__ agent = SNMP::Agent.new(1061) trap("INT") { agent.shutdown } agent.start end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
snmp-1.1.1 | lib/snmp/agent.rb |
snmp-1.1.0 | lib/snmp/agent.rb |
snmp-1.0.4 | lib/snmp/agent.rb |