2013-11-02 103 views
0

我在Rails應用程序中使用SNMP gem來控制Cisco交換機。 Gem工作的「get」功能,我可以從設備中檢索值,但「set」功能不能很好地工作...Ruby on Rails SNMP 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# 

但是,當我嘗試使用寶石來設置相同的OID,我得到 「不從192.168.3.1響應」在這兩個實際應用和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 

我可以運行從同一臺機器上的命令行啓動snmpset,它可以正常工作,但不能使用該gem。

回答

1

嘗試varbind = VarBind.new("1.3.6.1.2.1.2.2.1.7.11", SNMP::Integer.new(2))以便varbind類型正確。

+0

謝謝戴夫。就是這樣。 – wolf2600