Class: Net::SNMP::TrapSession
- Defined in:
- lib/net/snmp/trap_session.rb
Instance Attribute Summary
Attributes inherited from Session
#callback, #community, #peername, #port, #requests, #struct, #version
Instance Method Summary collapse
-
#inform(options = {}, &callback) ⇒ Object
Send an SNMPv2 inform.
-
#initialize(options = {}) ⇒ TrapSession
constructor
options
* :peername The address where the trap will be sent * :port The port where the trap will be sent (default = 162). -
#trap(options = {}) ⇒ Object
Send an SNMPv1 trap.
-
#trap_v2(options = {}) ⇒ Object
Send an SNMPv2 trap +options * :oid The Oid of the trap * :varbinds A list of Varbind objects to send with the trap.
Methods inherited from Session
#close, #columns, #default_max_repeaters, #errno, #error, #error_message, #get, #get_bulk, #get_next, #method_missing, open, #print_errors, #select, #send_pdu, #send_pdu_blocking, #set, #snmp_err, #table, #walk
Methods included from Debug
#debug, #error, #fatal, #info, #print_packet, #time, #warn
Constructor Details
#initialize(options = {}) ⇒ TrapSession
options
-
:peername The address where the trap will be sent
-
:port The port where the trap will be sent (default = 162)
9 10 11 12 13 14 15 16 17 |
# File 'lib/net/snmp/trap_session.rb', line 9 def initialize( = {}) # Unless the port was supplied in the peername... unless [:peername][":"] # ...default to standard trap port [:port] ||= 162 end super() end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Net::SNMP::Session
Instance Method Details
#inform(options = {}, &callback) ⇒ Object
Send an SNMPv2 inform. Can accept a callback to execute on confirmation of the inform +options
-
:oid The OID of the inform
-
:varbinds A list of Varbind objects to send with the inform
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/net/snmp/trap_session.rb', line 68 def inform( = {}, &callback) if [:oid].kind_of?(String) [:oid] = Net::SNMP::OID.new([:oid]) end pdu = PDU.new(Constants::SNMP_MSG_INFORM) build_trap_pdu(pdu, ) result = send_pdu(pdu, &callback) pdu.free result end |
#trap(options = {}) ⇒ Object
Send an SNMPv1 trap
Options
-
enterprise: The Oid of the enterprise
-
trap_type: The generic trap type.
-
specific_type: The specific trap type
-
uptime: The uptime for this agent
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/net/snmp/trap_session.rb', line 27 def trap( = {}) pdu = PDU.new(Constants::SNMP_MSG_TRAP) [:enterprise] ||= '1.3.6.1.4.1.3.1.1' pdu.enterprise = OID.new([:enterprise].to_s) pdu.trap_type = [:trap_type].to_i || 1 # need to check all these defaults pdu.specific_type = [:specific_type].to_i || 0 pdu.time = [:uptime].to_i || 1 pdu.agent_addr = [:agent_addr] || '127.0.0.1' if [:varbinds] [:varbinds].each do |vb| pdu.add_varbind(vb) end end result = send_pdu(pdu) pdu.free result end |
#trap_v2(options = {}) ⇒ Object
Send an SNMPv2 trap +options
-
:oid The Oid of the trap
-
:varbinds A list of Varbind objects to send with the trap
TODO: You can only send v1 traps on a v1 session, and same for v2. So, we could always have the client call ‘trap` and just do the right thing based on the session.
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/net/snmp/trap_session.rb', line 53 def trap_v2( = {}) if [:oid].kind_of?(String) [:oid] = Net::SNMP::OID.new([:oid]) end pdu = PDU.new(Constants::SNMP_MSG_TRAP2) build_trap_pdu(pdu, ) result = send_pdu(pdu) pdu.free result end |