Class: SNMP::Agent
- Inherits:
-
Object
- Object
- SNMP::Agent
- Defined in:
- lib/snmp/agent.rb
Overview
:nodoc:all
Instance Method Summary collapse
-
#initialize(listen_port = 161, max_packet = 8000) ⇒ Agent
constructor
A new instance of Agent.
- #shutdown ⇒ Object (also: #stop)
- #start ⇒ Object
Constructor Details
#initialize(listen_port = 161, max_packet = 8000) ⇒ Agent
Returns a new instance of Agent.
18 19 20 21 22 23 24 25 |
# File 'lib/snmp/agent.rb', line 18 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 |
Instance Method Details
#shutdown ⇒ Object Also known as: stop
57 58 59 60 61 |
# File 'lib/snmp/agent.rb', line 57 def shutdown @log.info "SNMP agent stopping" @socket.close exit end |
#start ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/snmp/agent.rb', line 27 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.decode(data) case .pdu when GetRequest response = .response response.pdu.varbind_list.each do |v| v.value = @mib.get(v.name) end when SetRequest response = .response else raise "invalid message #{.to_s}" end puts "Responding to #{remote_info[3]}:#{remote_info[1]}" = response.encode n=@socket.send(, 0, remote_info[3], remote_info[1]) p rescue => e @log.error e shutdown end end end |