Выполнение нескольких команд маршрутизатора JUNOS с помощью ruby

Кто-нибудь пытался выполнить несколько команд на маршрутизаторе JUNOS, используя ruby ​​с гемами net/ssh и net/ssh/telnet, где вам нужно перейти в режим настройки? Он никогда не хочет принимать команды конфигурации, и я не знаю, почему.

Вот мой код:

def exec_router(host_type, commands)
  puts "commands: #{commands}"
  output = ""
  ssh = Net::SSH.start(HOST_MAP[host_type], QA_USER, :password => QA_USER_PASSWORD)
  t = Net::SSH::Telnet.new("Session" => ssh, "Prompt" => /.+@.+>/, "Output_log" => "/tmp/test.outputi")
  commands.each { |command| output << t.cmd(command) }
  puts output
  t.close
  ssh.close
end

И вот вывод, который он производит:

  commands: ["configure", "show policy-options prefix-list greautomation-676872"]
  configure
              ^
  unknown command.

  {master:member0-re0}
  [email protected]> show policy-options
                   ^
  syntax error, expecting <command>.

[email protected]> show policy-optionsprefix-list ^ синтаксическая ошибка, ожидается . [email protected]> show policy-optionsprefix-listgreautomation-676872 ^ синтаксическая ошибка, ожидается .

Я знаю, что мой ssh/telnet работает, потому что я могу заменить блок, который перебирает массив команд, на t.cmd('?') и я получаю ожидаемый результат без ошибок.

Моя версия Junos — 15.1F6-S3.8, и я использую ruby ​​​​2.3.0.

заранее спасибо

Крейг


person CraigD    schedule 03.01.2017    source источник


Ответы (3)


Вы проверили https://github.com/Juniper/net-netconf? Это Ruby Gem для взаимодействия на основе NETCONF с устройствами Junos.

person Dwarakanath    schedule 03.01.2017


Хотя я бы рекомендовал вам использовать библиотеки RubyEZ, ваша проблема связана с тем, что вы пытаетесь выполнить команду синтаксиса конфигурации в рабочем режиме.

Вот ваша проблема:

commands: ["configure", "show policy-options prefix-list greautomation-676872"]

Внесите следующие изменения:

  • удалить команду "настроить"
  • замените «показать список префиксов параметров политики greautomation-676872» на «показать список префиксов параметров политики конфигурации greautomation-676872»

Это должно решить вашу проблему.

Я настоятельно рекомендую вам изучить библиотеки RubyEZ от Juniper.

person Diogo Montagner    schedule 03.01.2017
comment
Это работает вручную, но по какой-то причине я никогда не вижу результата, когда делаю это через свой скрипт. Сейчас смотрю на RubyEZ. Спасибо! - person CraigD; 04.01.2017