我有以下代码片段,我试图将其作为整数和字符串数组返回到 Shoes
Shoes.setup do
gem 'snmp'
end
class SNMPManager
require 'snmp'
include SNMP
attr_accessor :hostname, :framerate
def initialize(params = {})
@hostname = params.fetch(:hostname, 'localhost')
@framerate = params.fetch(:framerate, 25)
end
def getValues
Manager.open(:host => @hostname, :mib_modules => ["SNMPv2-MIB"]) do |manager|
poolArray = []
ifTable = ObjectId.new("1.3.6.1.4.1.15248.2.5.1.3.1")
manager.walk(ifTable) do |row|
poolArray.push(row.inspect)
end
groups = poolArray.group_by{ |s| s.split(',').first[/\d+$/] }
@values = groups.map{ |key, ary| ary.map{ |s| s[/value=(\S+)/, 1] } }
end
end
def to_s
return @values
end
end
Shoes.app do
#@hostname = edit_line
#man =SNMPManager.new(:host => @hostname)
man = SNMPManager.new
man.getValues
puts 'SNMP Space Monitor'
man.to_s.each {|v|
@note = para "#{v[1]} \t(Pool: #{v[0]}) \tCapacity: #{v[3].to_i} \tFree Protons: #{v[2].to_i} \tPercent Free: %#{(v[3].to_f/v[2].to_f*100).round(2)}"
}
end
由于某种原因,Shoes 将其显示为:
但是如果我正常运行 ruby 脚本,并用 puts 输出它,它会正确显示,并正确计算响应。我知道我遗漏了一些明显的东西,但看不到它是什么。我正在尝试将数组转换为另一个数组,但这似乎完全搞砸了。