net-snmp2 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/LICENSE +20 -0
- data/README.md +28 -0
- data/Rakefile +24 -0
- data/TODO.md +6 -0
- data/bin/mib2rb +129 -0
- data/bin/net-snmp2 +64 -0
- data/examples/agent.rb +104 -0
- data/examples/manager.rb +11 -0
- data/examples/trap_handler.rb +46 -0
- data/examples/v1_trap_session.rb +24 -0
- data/examples/v2_trap_session.rb +21 -0
- data/lib/net-snmp2.rb +85 -0
- data/lib/net/snmp.rb +27 -0
- data/lib/net/snmp/agent/agent.rb +48 -0
- data/lib/net/snmp/agent/provider.rb +51 -0
- data/lib/net/snmp/agent/provider_dsl.rb +124 -0
- data/lib/net/snmp/agent/request_dispatcher.rb +38 -0
- data/lib/net/snmp/constants.rb +287 -0
- data/lib/net/snmp/debug.rb +54 -0
- data/lib/net/snmp/dispatcher.rb +108 -0
- data/lib/net/snmp/error.rb +29 -0
- data/lib/net/snmp/listener.rb +76 -0
- data/lib/net/snmp/message.rb +142 -0
- data/lib/net/snmp/mib/mib.rb +67 -0
- data/lib/net/snmp/mib/module.rb +39 -0
- data/lib/net/snmp/mib/node.rb +122 -0
- data/lib/net/snmp/mib/templates.rb +48 -0
- data/lib/net/snmp/oid.rb +134 -0
- data/lib/net/snmp/pdu.rb +235 -0
- data/lib/net/snmp/repl/manager_repl.rb +243 -0
- data/lib/net/snmp/session.rb +560 -0
- data/lib/net/snmp/trap_handler/trap_handler.rb +42 -0
- data/lib/net/snmp/trap_handler/v1_trap_dsl.rb +44 -0
- data/lib/net/snmp/trap_handler/v2_trap_dsl.rb +38 -0
- data/lib/net/snmp/trap_session.rb +92 -0
- data/lib/net/snmp/utility.rb +10 -0
- data/lib/net/snmp/varbind.rb +57 -0
- data/lib/net/snmp/version.rb +5 -0
- data/lib/net/snmp/wrapper.rb +450 -0
- data/net-snmp2.gemspec +30 -0
- data/spec/README.md +105 -0
- data/spec/async_spec.rb +123 -0
- data/spec/em_spec.rb +23 -0
- data/spec/error_spec.rb +34 -0
- data/spec/fiber_spec.rb +41 -0
- data/spec/mib_spec.rb +68 -0
- data/spec/net-snmp_spec.rb +18 -0
- data/spec/oid_spec.rb +21 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/sync_spec.rb +132 -0
- data/spec/thread_spec.rb +19 -0
- data/spec/trap_spec.rb +45 -0
- data/spec/utility_spec.rb +10 -0
- data/spec/wrapper_spec.rb +69 -0
- metadata +166 -0
data/spec/oid_spec.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Net::SNMP::OID do
|
4
|
+
it "should instantiate valid oid with numeric" do
|
5
|
+
oid = Net::SNMP::OID.new("1.3.6.1.2.1.2.1.0")
|
6
|
+
oid.to_s.should eql("1.3.6.1.2.1.2.1.0")
|
7
|
+
oid.label.should eql("ifNumber.0")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should instantiate valid oid with string" do
|
11
|
+
oid = Net::SNMP::OID.new("ifNumber.0")
|
12
|
+
oid.to_s.should eql("1.3.6.1.2.1.2.1.0")
|
13
|
+
oid.label.should eql("ifNumber.0")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should to_s correctly" do
|
17
|
+
oid_str = "1.3.6.1.2.1.2.1.0"
|
18
|
+
oid = Net::SNMP::OID.new(oid_str)
|
19
|
+
oid.to_s.should eq(oid_str)
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
|
4
|
+
require 'net-snmp2'
|
5
|
+
require 'rspec'
|
6
|
+
|
7
|
+
# Trap tests fail randomly due to race conditions,
|
8
|
+
# setting thread_safe should fix this
|
9
|
+
Net::SNMP::thread_safe = true
|
10
|
+
Net::SNMP.init
|
data/spec/sync_spec.rb
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "synchronous calls" do
|
4
|
+
context "version 1" do
|
5
|
+
it "get should succeed" do
|
6
|
+
Net::SNMP::Session.open(:peername => "test.net-snmp.org", :community => "demopublic" ) do |sess|
|
7
|
+
result = sess.get("sysDescr.0")
|
8
|
+
result.varbinds.first.value.should eql("test.net-snmp.org")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it "multiple calls within session should succeed" do
|
13
|
+
Net::SNMP::Session.open(:peername => "test.net-snmp.org", :community => "demopublic" ) do |sess|
|
14
|
+
result = sess.get("sysDescr.0")
|
15
|
+
result.varbinds.first.value.should eql("test.net-snmp.org")
|
16
|
+
second = sess.get("sysName.0")
|
17
|
+
second.varbinds.first.value.should eql("test.net-snmp.org")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "get should succeed with multiple oids" do
|
22
|
+
Net::SNMP::Session.open(:peername => "test.net-snmp.org", :community => 'demopublic' ) do |sess|
|
23
|
+
result = sess.get(["sysDescr.0", "sysName.0"])
|
24
|
+
result.varbinds[0].value.should eql("test.net-snmp.org")
|
25
|
+
result.varbinds[1].value.should eql("test.net-snmp.org")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "set should succeed" do
|
30
|
+
Net::SNMP::Session.open(:peername => 'localhost', :version => 1, :community => 'private') do |sess|
|
31
|
+
result = sess.set([['sysContact.0', Net::SNMP::Constants::ASN_OCTET_STR, 'newContact']])
|
32
|
+
result.varbinds.first.value.should match(/newContact/)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it "getnext should succeed" do
|
37
|
+
Net::SNMP::Session.open(:peername => "test.net-snmp.org", :community => "demopublic" ) do |sess|
|
38
|
+
result = sess.get_next(["sysUpTimeInstance.0"])
|
39
|
+
result.varbinds.first.oid.oid.should eql("1.3.6.1.2.1.1.4.0")
|
40
|
+
result.varbinds.first.value.should match(/Net-SNMP Coders/)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it "getbulk should succeed" do
|
45
|
+
Net::SNMP::Session.open(:peername => "test.net-snmp.org" , :version => '2c', :community => 'demopublic') do |sess|
|
46
|
+
result = sess.get_bulk(["sysContact.0"], :max_repetitions => 10)
|
47
|
+
result.varbinds.first.oid.name.should eql("1.3.6.1.2.1.1.5.0")
|
48
|
+
result.varbinds.first.value.should eql("test.net-snmp.org")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "getbulk should succeed with multiple oids" do
|
53
|
+
Net::SNMP::Session.open(:peername => "localhost" , :version => '2c', :community => 'public') do |sess|
|
54
|
+
result = sess.get_bulk(["ifIndex", "ifType"], :max_repetitions =>3)
|
55
|
+
result.varbinds.size.should eql(6)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it "rasises an when a non-existant MIB variable is requested" do
|
60
|
+
Net::SNMP::Session.open(:peername => "test.net-snmp.org", :community => "demopublic" ) do |sess|
|
61
|
+
expect { sess.get(["XXXsysDescr.0"]) }.to raise_error
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it "get_table should work" do
|
66
|
+
session = Net::SNMP::Session.open(:peername => "localhost", :version => '1')
|
67
|
+
table = session.table("ifEntry")
|
68
|
+
table['1']['ifIndex'].should eql(1)
|
69
|
+
table['2']['ifIndex'].should eql(2)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "walk should work" do
|
73
|
+
session = Net::SNMP::Session.open(:peername => 'test.net-snmp.org', :version => 1, :community => 'demopublic')
|
74
|
+
results = session.walk("system")
|
75
|
+
results['1.3.6.1.2.1.1.1.0'].should match(/test.net-snmp.org/)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "walk should work with multiple oids" do
|
79
|
+
Net::SNMP::Session.open(:peername => 'localhost', :version => 1) do |sess|
|
80
|
+
sess.walk(['system', 'ifTable']) do |results|
|
81
|
+
# Set earlier. Yes, I know, tests shouldn't depend on eachother...
|
82
|
+
results['1.3.6.1.2.1.1.4.0'].should match(/newContact/)
|
83
|
+
# ifIndex (Should just be returning the same number as the instance requested)
|
84
|
+
results['1.3.6.1.2.1.2.2.1.1.2'].should eql(2)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
it "get_columns should work" do
|
90
|
+
Net::SNMP::Session.open(:peername => 'localhost') do |sess|
|
91
|
+
table = sess.columns(['ifIndex', 'ifDescr', 'ifType'])
|
92
|
+
table['1']['ifIndex'].should eql(1)
|
93
|
+
table['2']['ifDescr'].should match(/[a-zA-Z]{3}[0-9]/)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it "get a value with oid type should work" do
|
98
|
+
Net::SNMP::Session.open(:peername => 'test.net-snmp.org', :community => 'demopublic') do |sess|
|
99
|
+
res = sess.get("sysObjectID.0")
|
100
|
+
res.varbinds.first.value.to_s.should eql('1.3.6.1.4.1.8072.3.2.10')
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "version 2" do
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
context "version 3" do
|
110
|
+
it "should get using snmpv3" do
|
111
|
+
Net::SNMP::Session.open(:peername => 'test.net-snmp.org', :version => 3, :username => 'MD5User', :security_level => Net::SNMP::Constants::SNMP_SEC_LEVEL_AUTHNOPRIV, :auth_protocol => :md5, :password => 'The Net-SNMP Demo Password') do |sess|
|
112
|
+
result = sess.get("sysDescr.0")
|
113
|
+
result.varbinds.first.value.should eql('test.net-snmp.org')
|
114
|
+
end
|
115
|
+
end
|
116
|
+
it "should set using snmpv3" do
|
117
|
+
pending
|
118
|
+
Net::SNMP::Session.open(:peername => 'localhost', :version => 3, :username => 'myuser', :auth_protocol => :sha1, :password => '0x1234') do |sess|
|
119
|
+
result = sess.set([["sysDescr.0", Net::SNMP::Constants::ASN_OCTET_STR, 'yomama']])
|
120
|
+
result.varbinds.first.value.should match(/Darwin/)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should get using authpriv" do
|
125
|
+
pending
|
126
|
+
Net::SNMP::Session.open(:peername => 'localhost', :version => 3, :username => 'mixtli', :security_level => Net::SNMP::Constants::SNMP_SEC_LEVEL_AUTHPRIV, :auth_protocol => :md5, :priv_protocol => :des, :auth_password => 'testauth', :priv_password => 'testpass') do |sess|
|
127
|
+
result = sess.get("sysDescr.0")
|
128
|
+
result.varbinds.first.value.should match(/xenu/)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
data/spec/thread_spec.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "in a thread" do
|
4
|
+
it "should get an oid asynchronously in a thread" do
|
5
|
+
did_callback = false
|
6
|
+
dispatch_thread = Net::SNMP::Dispatcher.thread_loop
|
7
|
+
Net::SNMP::Session.open(:peername => 'test.net-snmp.org', :community => 'demopublic') do |s|
|
8
|
+
s.get(["sysDescr.0", "sysContact.0"]) do |op, result|
|
9
|
+
did_callback = true
|
10
|
+
result.varbinds[0].value.should eql("test.net-snmp.org")
|
11
|
+
result.varbinds[1].value.should match(/Coders/)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
sleep 3
|
15
|
+
did_callback.should be(true)
|
16
|
+
|
17
|
+
Thread.kill(dispatch_thread)
|
18
|
+
end
|
19
|
+
end
|
data/spec/trap_spec.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
# NOTE: Run a trap receiver on port 163 for these tests to pass.
|
4
|
+
# (I'm using MIB Browser's builtin receiver)
|
5
|
+
# This is just because I'm using the veraxsystem SNMP simulator for other tests,
|
6
|
+
# and it occupies port 162 but doesn't respond to the informs
|
7
|
+
|
8
|
+
describe Net::SNMP::TrapSession do
|
9
|
+
it "should send a v1 trap" do
|
10
|
+
Net::SNMP::TrapSession.open(:peername => 'localhost:163', :version => '1', :community => 'public') do |sess|
|
11
|
+
res = sess.trap(
|
12
|
+
enterprise: '1.3.1',
|
13
|
+
trap_type: 6,
|
14
|
+
specific_type: 1,
|
15
|
+
uptime: 1000,
|
16
|
+
agent_addr: '127.0.0.1'
|
17
|
+
)
|
18
|
+
res.should eq(:success)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should send v2 trap" do
|
23
|
+
Net::SNMP::TrapSession.open(:peername => 'localhost:163', :version => '2c') do |sess|
|
24
|
+
res = sess.trap_v2(:oid => 'sysContact.0', :uptime => 1000)
|
25
|
+
res.should eq(:success)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should send a v2 inform" do
|
30
|
+
did_callback = false
|
31
|
+
Net::SNMP::TrapSession.open(:peername => 'localhost:163', :version => '2c') do |sess|
|
32
|
+
resp = sess.inform(:oid => 'coldStart.0')
|
33
|
+
has_cold_start_oid = false
|
34
|
+
# Got some weird segfaults when using rspec's ".should include {...}"
|
35
|
+
# matcher, so I did this manually.
|
36
|
+
resp.varbinds.each do |vb|
|
37
|
+
if (vb.oid.to_s == Net::SNMP::MIB.translate('snmpTrapOID.0')) &&
|
38
|
+
(vb.value.to_s == Net::SNMP::MIB.translate('coldStart.0'))
|
39
|
+
has_cold_start_oid = true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
has_cold_start_oid.should eq(true)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Net::SNMP::Utility do
|
4
|
+
it "should compare oids" do
|
5
|
+
Net::SNMP::Utility.oid_lex_cmp('1.3.5', '1.3.7').should eql(-1)
|
6
|
+
Net::SNMP::Utility.oid_lex_cmp('1.3.7', '1.3.5').should eql(1)
|
7
|
+
Net::SNMP::Utility.oid_lex_cmp('1.3.7', '1.3.7.1').should eql(-1)
|
8
|
+
Net::SNMP::Utility.oid_lex_cmp('1.3.5', '1.3.5').should eql(0)
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Net::SNMP::Wrapper" do
|
4
|
+
def init_session
|
5
|
+
community = "demopublic"
|
6
|
+
peername = "test.net-snmp.org"
|
7
|
+
|
8
|
+
@session = Net::SNMP::Wrapper::SnmpSession.new(nil)
|
9
|
+
Net::SNMP::Wrapper.snmp_sess_init(@session.pointer)
|
10
|
+
@session.community = FFI::MemoryPointer.from_string(community)
|
11
|
+
@session.community_len = community.length
|
12
|
+
@session.peername = FFI::MemoryPointer.from_string(peername)
|
13
|
+
@session.version = Net::SNMP::Constants::SNMP_VERSION_1
|
14
|
+
|
15
|
+
@handle = Net::SNMP::Wrapper.snmp_sess_open(@session.pointer)
|
16
|
+
@session_struct = Net::SNMP::Wrapper.snmp_sess_session(@handle)
|
17
|
+
end
|
18
|
+
|
19
|
+
def make_pdu
|
20
|
+
@pdu = Net::SNMP::Wrapper.snmp_pdu_create(Net::SNMP::Constants::SNMP_MSG_GET)
|
21
|
+
@oid_ptr = FFI::MemoryPointer.new(:ulong, Net::SNMP::Constants::MAX_OID_LEN)
|
22
|
+
@oid_len_ptr = FFI::MemoryPointer.new(:size_t)
|
23
|
+
@oid_len_ptr.write_int(Net::SNMP::Constants::MAX_OID_LEN)
|
24
|
+
|
25
|
+
Net::SNMP::Wrapper.get_node("sysDescr.0", @oid_ptr, @oid_len_ptr)
|
26
|
+
Net::SNMP::Wrapper.snmp_pdu_add_variable(@pdu.pointer, @oid_ptr, @oid_len_ptr.read_int, Net::SNMP::Constants::ASN_NULL, nil, 0)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "wrapper should snmpget synchronously" do
|
30
|
+
init_session
|
31
|
+
|
32
|
+
make_pdu
|
33
|
+
|
34
|
+
response_ptr = FFI::MemoryPointer.new(:pointer)
|
35
|
+
status = Net::SNMP::Wrapper.snmp_sess_synch_response(@handle, @pdu.pointer, response_ptr)
|
36
|
+
status.should eql(0)
|
37
|
+
|
38
|
+
response = Net::SNMP::Wrapper::SnmpPdu.new(response_ptr.read_pointer)
|
39
|
+
value = response.variables.val[:string].read_string(response.variables.val_len)
|
40
|
+
value.should eql('test.net-snmp.org')
|
41
|
+
end
|
42
|
+
|
43
|
+
it "wrapper should snmpget asynchronously" do
|
44
|
+
init_session
|
45
|
+
make_pdu
|
46
|
+
did_callback = 0
|
47
|
+
result = nil
|
48
|
+
@session.callback = lambda do |operation, session, reqid, pdu_ptr, magic|
|
49
|
+
did_callback = 1
|
50
|
+
pdu = Net::SNMP::Wrapper::SnmpPdu.new(pdu_ptr)
|
51
|
+
variables = Net::SNMP::Wrapper::VariableList.new(pdu.variables)
|
52
|
+
result = variables.val[:string].read_string(variables.val_len)
|
53
|
+
0
|
54
|
+
end
|
55
|
+
sess = Net::SNMP::Wrapper.snmp_open(@session.pointer)
|
56
|
+
Net::SNMP::Wrapper.snmp_send(sess.pointer, @pdu)
|
57
|
+
sleep 1
|
58
|
+
fdset = FFI::MemoryPointer.new(1024 * 8)
|
59
|
+
fds = FFI::MemoryPointer.new(:int)
|
60
|
+
tval = Net::SNMP::Wrapper::TimeVal.new
|
61
|
+
block = FFI::MemoryPointer.new(:int)
|
62
|
+
block.write_int(1)
|
63
|
+
Net::SNMP::Wrapper.snmp_select_info(fds, fdset, tval.pointer, block )
|
64
|
+
FFI::LibC.select(fds.read_int, fdset, nil, nil, nil)
|
65
|
+
Net::SNMP::Wrapper.snmp_read(fdset)
|
66
|
+
did_callback.should be(1)
|
67
|
+
result.should eql('test.net-snmp.org')
|
68
|
+
end
|
69
|
+
end
|
metadata
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: net-snmp2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ron McClain
|
8
|
+
- Jared Breeden
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-11-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: nice-ffi
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: pry
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rspec
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: eventmachine
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
description: Cross platform net-snmp wrapper for Ruby, building on the original net-snmp
|
71
|
+
gem
|
72
|
+
email:
|
73
|
+
- jared.breeden@gmail.com
|
74
|
+
executables:
|
75
|
+
- mib2rb
|
76
|
+
- net-snmp2
|
77
|
+
extensions: []
|
78
|
+
extra_rdoc_files:
|
79
|
+
- README.md
|
80
|
+
files:
|
81
|
+
- .gitignore
|
82
|
+
- .rspec
|
83
|
+
- Gemfile
|
84
|
+
- LICENSE
|
85
|
+
- README.md
|
86
|
+
- Rakefile
|
87
|
+
- TODO.md
|
88
|
+
- bin/mib2rb
|
89
|
+
- bin/net-snmp2
|
90
|
+
- examples/agent.rb
|
91
|
+
- examples/manager.rb
|
92
|
+
- examples/trap_handler.rb
|
93
|
+
- examples/v1_trap_session.rb
|
94
|
+
- examples/v2_trap_session.rb
|
95
|
+
- lib/net-snmp2.rb
|
96
|
+
- lib/net/snmp.rb
|
97
|
+
- lib/net/snmp/agent/agent.rb
|
98
|
+
- lib/net/snmp/agent/provider.rb
|
99
|
+
- lib/net/snmp/agent/provider_dsl.rb
|
100
|
+
- lib/net/snmp/agent/request_dispatcher.rb
|
101
|
+
- lib/net/snmp/constants.rb
|
102
|
+
- lib/net/snmp/debug.rb
|
103
|
+
- lib/net/snmp/dispatcher.rb
|
104
|
+
- lib/net/snmp/error.rb
|
105
|
+
- lib/net/snmp/listener.rb
|
106
|
+
- lib/net/snmp/message.rb
|
107
|
+
- lib/net/snmp/mib/mib.rb
|
108
|
+
- lib/net/snmp/mib/module.rb
|
109
|
+
- lib/net/snmp/mib/node.rb
|
110
|
+
- lib/net/snmp/mib/templates.rb
|
111
|
+
- lib/net/snmp/oid.rb
|
112
|
+
- lib/net/snmp/pdu.rb
|
113
|
+
- lib/net/snmp/repl/manager_repl.rb
|
114
|
+
- lib/net/snmp/session.rb
|
115
|
+
- lib/net/snmp/trap_handler/trap_handler.rb
|
116
|
+
- lib/net/snmp/trap_handler/v1_trap_dsl.rb
|
117
|
+
- lib/net/snmp/trap_handler/v2_trap_dsl.rb
|
118
|
+
- lib/net/snmp/trap_session.rb
|
119
|
+
- lib/net/snmp/utility.rb
|
120
|
+
- lib/net/snmp/varbind.rb
|
121
|
+
- lib/net/snmp/version.rb
|
122
|
+
- lib/net/snmp/wrapper.rb
|
123
|
+
- net-snmp2.gemspec
|
124
|
+
- spec/README.md
|
125
|
+
- spec/async_spec.rb
|
126
|
+
- spec/em_spec.rb
|
127
|
+
- spec/error_spec.rb
|
128
|
+
- spec/fiber_spec.rb
|
129
|
+
- spec/mib_spec.rb
|
130
|
+
- spec/net-snmp_spec.rb
|
131
|
+
- spec/oid_spec.rb
|
132
|
+
- spec/spec_helper.rb
|
133
|
+
- spec/sync_spec.rb
|
134
|
+
- spec/thread_spec.rb
|
135
|
+
- spec/trap_spec.rb
|
136
|
+
- spec/utility_spec.rb
|
137
|
+
- spec/wrapper_spec.rb
|
138
|
+
homepage: https://github.com/jbreeden/net-snmp2
|
139
|
+
licenses: []
|
140
|
+
metadata: {}
|
141
|
+
post_install_message:
|
142
|
+
rdoc_options:
|
143
|
+
- --main=README.md
|
144
|
+
- --line-numbers
|
145
|
+
- --inline-source
|
146
|
+
- --title=net-snmp2-0.3.0 Documentation
|
147
|
+
require_paths:
|
148
|
+
- lib
|
149
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
requirements: []
|
160
|
+
rubyforge_project:
|
161
|
+
rubygems_version: 2.0.14
|
162
|
+
signing_key:
|
163
|
+
specification_version: 4
|
164
|
+
summary: Object oriented wrapper around C net-snmp libraries
|
165
|
+
test_files: []
|
166
|
+
has_rdoc: true
|