From: Nicola Tiling Date: 2010-05-23T18:13:56+09:00 Subject: Need help to decode snmp string Hi I'm a ruby newbie and need a little help. I think I'm wrong with class and instance methods? I can't figure out how to do a decode a snmp output. I use the snmp library http://rubyforge.org/projects/snmplib/ My script: #!/usr/local/bin/ruby18 -w require "rubygems" gem "snmp" require "snmp" SNMP::Manager.open(:Host => '192.168.0.253', :Version => :SNMPv1, :Community => 'public') do |manager| manager.load_module("RC-VLAN-MIB") 48.times do |i| i = i+1 response = manager.get(["rcVlanPortVlanIds.#{i}"]) response.each_varbind do |varbind| p varbind.value end end end The output is like this "\000\001\000\004\000\005\000\006\000\f" "\000\001\000\f" "\000\001\000\002\000\005\000\006\000\a\000\b\000\v\000\f\000\r" "\000\001" But I want to decode this output to integer vlan id's. 1,4,5,6,12 1,12 1,2,5,6,7,8,11,12,13 1 How can I do it with methodes from the snmp library? I'm playing with decode and decode_value. But the only result was "undefined method `decode' for # (NoMethodError)" But "decode" is a (Public Class) methode of VarBind and I don't understand what's wrong. http://snmplib.rubyforge.org/doc/index.html Also I don't understand why "f" stands for "12" and "v" for "11" and "r" for "13" ruby says it is a octet string ("p varbind.value.asn1_type" shows "OCTET STRING") With net-snmp I fetch vlan ids per port in hex snmpwalk -v 1 -c public -m RC-VLAN-MIB 192.168.0.253 .1.3.6.1.4.1.2272.1.3.3.1.3 I get: RC-VLAN-MIB::rcVlanPortVlanIds.1 = Hex-STRING: 00 01 00 04 00 05 00 06 00 0C RC-VLAN-MIB::rcVlanPortVlanIds.2 = Hex-STRING: 00 01 00 0C RC-VLAN-MIB::rcVlanPortVlanIds.3 = Hex-STRING: 00 01 00 02 00 05 00 06 00 07 00 08 00 0B 00 0C Nicola