Search code examples
ruby-on-railssnmp

Ruby on Rails SNMP gem - no response from device


I'm using the SNMP gem in a Rails app to control a Cisco switch. The "get" features of the Gem work, and I can retrieve values from the devices, but the "set" feature isn't working so well...

From the command line, the SNMP commands work properly:

bash-4.1# snmpset -v2c -c private-string 192.168.3.1 .1.3.6.1.2.1.2.2.1.7.11 i 2
IF-MIB::ifAdminStatus.11 = INTEGER: down(2)
bash-4.1# 

But when I try to set the same OID using the Gem, I get "no response from 192.168.3.1" In both the actual app and in IRB:

bash-4.1# irb
2.0.0-p0 :001 > require 'snmp'
 => true 
2.0.0-p0 :002 > include SNMP
 => Object 
2.0.0-p0 :003 > SNMP::Manager.open(:host => "192.168.3.1", :community => "private-string") do |manager|
2.0.0-p0 :004 >     varbind = VarBind.new("1.3.6.1.2.1.2.2.1.7.11", "2")
2.0.0-p0 :005?>   manager.set(varbind)
2.0.0-p0 :006?>   end
    SNMP::RequestTimeout: host 192.168.3.1 not responding
        from /usr/local/rvm/gems/ruby-2.0.0-p0/gems/snmp-1.1.1/lib/snmp/manager.rb:293:in `set'
        from (irb):5:in `block in irb_binding'
        from /usr/local/rvm/gems/ruby-2.0.0-p0/gems/snmp-1.1.1/lib/snmp/manager.rb:205:in `open'
        from (irb):3
        from /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'
2.0.0-p0 :007 > exit

I can run the snmpset from the command line on the same machine, and it works correctly, but not using the gem.


Solution

  • Try varbind = VarBind.new("1.3.6.1.2.1.2.2.1.7.11", SNMP::Integer.new(2)) so that the varbind type is correct.