0

我在 Rails 应用程序中使用 SNMP gem 来控制 Cisco 交换机。Gem 的“获取”功能可以正常工作,我可以从设备中检索值,但“设置”功能效果不佳……

从命令行,SNMP 命令正常工作:

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# 

但是当我尝试使用 Gem 设置相同的 OID 时,在实际应用程序和 IRB 中都得到“192.168.3.1 没有响应”:

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

我可以在同一台机器上从命令行运行 snmpset,它可以正常工作,但不能使用 gem。

4

1 回答 1

1

尝试varbind = VarBind.new("1.3.6.1.2.1.2.2.1.7.11", SNMP::Integer.new(2))使 varbind 类型正确。

于 2013-11-02T19:16:49.553 回答