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 |