Рубин: Показать вывод SNMP в Синатре - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать небольшой сайт с помощью Sinatra, где я хочу отображать данные SNMP.

require 'sinatra'
#require 'sinatra/reloader'
require 'snmp'
get'/' do
    'Hello World'
    SNMP::Manager.open(:host => 'localhost') do |manager|
        response = manager.get(["sysDescr.0","sysName.0"])
        response.each_varbind do |vb|
            puts "#{vb.name.to_s} #{vb.value.to_s} #{vb.value.asn1_type}"
        end
    end

end

К сожалению, этот код выводит результат на консоль, а не на веб-страницу.

Надеюсь, вы мне поможете.

1 Ответ

0 голосов
/ 30 ноября 2018

Похоже, что ваши вызовы помещаются во время итерации ваших данных, это выводит результаты на консоль, так как ruby ​​не может вводить элементы непосредственно на веб-страницу, а потому что put может печатать только в вашу консоль / терминал.если вы хотите отобразить результаты на своей веб-странице, вам нужно будет передать их в виде параметров в ваш файл: erb, а затем отобразить их в файле erb следующим образом:

get'/' do
  'Hello World'
  SNMP::Manager.open(:host => 'localhost') do |manager|
      @response = manager.get(["sysDescr.0","sysName.0"]) # add the @ symbol to then pass as params into the erb file
      end
erb(:index) # load up your erb file
end

, а затем просто загрузить свои значенияв файле erb примерно так:

<%=@response.each_varbind do |vb|%>
<p>
<%={vb.name.to_s} + {vb.value.to_s} + {vb.value.asn1_type}%>
</p>

<%end%>

Теперь контроллер будет загружать файл index.html.erb всякий раз, когда вызывается маршрут get ('/'), и вы должны видеть свои значения, отображаемые в теге абзаца наscreen

Надеюсь, это поможет!

...