Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Ruby API клиент обновили.

    Ruby API клиент обновили.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Ruby API клиент обновили., RouterOS
     
    astounding
    Guest
    #1
    0
    19.12.2009 04:15:00
    Ruby API клиент был обновлен и теперь работает как с Ruby 1.8, так и с Ruby 1.9. Версия 2.0.1 внесла некоторые значительные изменения, перейдя к модели, управляемой событиями с обратными вызовами, для обработки ответов на API-команды. Весь ввод-вывод по-прежнему синхронный, но новая структура должна упростить переход к полностью асинхронной модели ввода-вывода для повышения производительности ввода-вывода (и позволить однопоточное обработку нескольких одновременных команд без блокировки в ожидании завершения одной из них) в будущем. Это большой шаг к достижению этой цели в проектировании. На MikroTik wiki была добавлена страница для Ruby API клиента: http://wiki.mikrotik.com/wiki/API_Ruby_class При продуманном проектировании и использовании, Ruby клиент 2.0 теперь может обрабатывать команды, которые не завершаются сразу, а вместо этого выдают периодические ответы. Например: подключитесь к устройству и получите список текущих DHCP-аренд.

    require 'mtik.rb'

    begin
     tik = MTik.new(:host => '10.20.30.1', :user => 'admin', :pass => 'mypassword')
    rescue MTikError,  Errno::ETIMEDOUT, Errno::EHOSTUNREACH, Errno::ECONNREFUSED => e
     print "ERROR CONNECTING OR LOGGING IN: #{e}\n"
     exit
    end

    begin
     tik.send_request(true, '/ip/dhcp-server/lease/getall') do |req, sentence|
       ## Этот блок кода выполняется ТОЛЬКО тогда, когда команда
       ## завершается с выводом '!done'...

       ## Перебираем каждое реплику ответа:
       req.reply.each do |reply|
         if reply.key?('!re')
           ## Смотрим информацию об аренде DHCP...
           print "LEASE: mac=#{reply['mac-address']} IP=#{reply['address']} status=#{reply['status']}\n"
         end
       end
     end
     while tik.outstanding > 0
       ## Основной "цикл событий"
       tik.wait_for_reply
     end
    rescue MTikError,  Errno::ETIMEDOUT, Errno::EHOSTUNREACH, Errno::ECONNREFUSED => e
     print "ERROR during DHCP lease API request: #{e}\n"
     exit
    end

    tik.close Вывод может выглядеть так: LEASE: mac=00:85:71:37:4F:26 IP=10.20.30.100 status=bound
    LEASE: mac=00:1E:48:FE:1F:7E IP=10.20.30.103 status=
    LEASE: mac=00:FF:44:08:43:E2 IP=10.20.30.105 status=
    LEASE: mac=00:14:D2:F2:87:F0 IP=10.20.30.109 status=bound
    LEASE: mac=00:19:BB:C9:82:FA IP=10.20.30.110 status=
    LEASE: mac=00:0E:A3:BE:B3:AF IP=10.20.30.111 status=bound
    LEASE: mac=00:25:C7:63:12:9A IP=10.20.30.108 status=bound Aaron out.
     
     
     
    astounding
    Guest
    #2
    0
    16.01.2010 04:02:00
    Наконец-то я превратил Ruby MikroTik API в настоящую "жемчужину" (GEM-ified)! Загляните на MikroTik wiki по адресу http://wiki.mikrotik.com/wiki/API_Ruby_class или на мой сайт http://www.aarongifford.com/computers/mtik/. Пришлось значительно увеличить версию до 3.0.0 из-за структурных изменений, которые ломают скрипты, использующие более старые Ruby API. (Я следую рекомендуемой схеме версионирования Ruby GEM.) 2.x реализовал модель событий, что сломало скрипты 1.x. 3.x основывается на дизайне 2.x, но благодаря изменениям в модулях, чтобы было более дружелюбно к пространствам имен в преддверии превращения в Ruby GEM, изменения в названии оказались слишком существенными, чтобы не привести к изменению основной версии. Ожидаю выпустить несколько незначительных версий в ближайшее время с новыми функциями, которые НЕ должны ломать существующие скрипты. (У меня скрипты работают, но я хочу перенести часть их функциональности в GEM, чтобы другие скрипты могли использовать тот же код.) С изменениями в версии 3.x, пример скрипта, о котором я упоминал выше, теперь будет выглядеть так: #!/usr/local/bin/ruby

    require 'rubygems'
    require 'mtik'

    begin
     tik = MTik::Connection.new(:host => '10.20.30.40', :user => 'admin', :pass => 'adminpassword')
    rescue MTik::Error,  Errno::ETIMEDOUT, Errno::EHOSTUNREACH, Errno::ECONNREFUSED => e
     print "ERROR CONNECTING OR LOGGING IN: #{e}\n"
     exit
    end

    begin
     ## MTik::Connection#get_reply_each() имеет встроенный цикл событий, поэтому нам
     ## не нужно выполнять его самостоятельно.
     tik.get_reply_each('/ip/dhcp-server/lease/getall') do |req, sentence|
       ## Этот блок кода вызывается для КАЖДОГО полученного ответа предложения:
       if sentence.key?('!re')
         ## Смотрим информацию о DHCP lease...
         print "LEASE: mac=#{sentence['mac-address']} IP=#{sentence['address']} status=#{sentence['status']}\n"
       end
     end
    rescue MTik::Error,  Errno::ETIMEDOUT, Errno::EHOSTUNREACH, Errno::ECONNREFUSED => e
     print "ERROR during DHCP lease API request: #{e}\n"
     exit
    end

    tik.close Вывод будет идентичным. Изменения в основном касаются таких вещей, как MTikError становится MTik::Error. Также новый метод MTik::Connection#get_reply_each() упрощает процесс, интегрируя цикл событий. Все равно можно напрямую вызывать send_request() и самостоятельно реализовать цикл событий – это желательно, когда нужно обрабатывать события, помимо тех, которые связаны с MTik. Aaron out.
     
     
     
    Eising
    Guest
    #3
    0
    03.02.2010 13:03:00
    Просто хотел сказать спасибо за твою реализацию API. Я пока не тестировал переработку 3.0, но всё в 2.x работает отлично, и я рад, что это наконец-то доступно как gem.
     
     
     
    astounding
    Guest
    #4
    0
    05.02.2010 22:52:00
    3.0.2 выпущен. Подробности и скачивание GEM-файла доступны по адресу http://www.aarongifford.com/computers/mtik/ или по адресу http://rubyforge.org/projects/mtik/. В этой версии в основном исправлены мелкие опечатки, а также добавлена небольшая функциональность для примера tikcommand.rb и интерактивной CLI-функции.

    Пример использования скрипта tikfetch.rb из подкаталога examples GEM, из командной строки на хосте с установленными Ruby и mtik:

    user@host:/home/tikexamples$ ./tikfetch.rb 10.0.0.55 adminuser adminpass http://download.mikrotik.com/routeros-mipsbe-4.5.npk routeros-mipsbe-4.5.npk
    >>> OK: Загрузка файла 'routeros-mipsbe-4.5.npk' по URL 'http://download.mikrotik.com/routeros-mipsbe-4.5.npk'...
    >>> OK: Подключение к 'http://download.mikrotik.com/routeros-mipsbe-4.5.npk' для загрузки файла 'routeros-mipsbe-4.5.npk'
    >>> OK: Загружено 318 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 2.85%
    >>> OK: Загружено 730 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 6.54%
    >>> OK: Загружено 1157 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 10.37%
    >>> OK: Загружено 1456 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 13.05%
    >>> OK: Загружено 1976 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 17.71%
    >>> OK: Загружено 2254 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 20.20%
    >>> OK: Загружено 2636 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 23.63%
    >>> OK: Загружено 3116 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 27.93%
    >>> OK: Загружено 3532 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 31.66%
    >>> OK: Загружено 3868 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 34.67%
    >>> OK: Загружено 4342 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 38.92%
    >>> OK: Загружено 4611 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 41.33%
    >>> OK: Загружено 5022 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 45.02%
    >>> OK: Загружено 5404 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 48.44%
    >>> OK: Загружено 5740 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 51.45%
    >>> OK: Загружено 6057 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 54.29%
    >>> OK: Загружено 6544 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 58.66%
    >>> OK: Загружено 7129 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 63.90%
    >>> OK: Загружено 7713 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 69.14%
    >>> OK: Загружено 8302 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 74.42%
    >>> OK: Загружено 8896 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 79.74%
    >>> OK: Загружено 9480 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 84.98%
    >>> OK: Загружено 10047 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 90.06%
    >>> OK: Загружено 10612 байт из 11156 байт файла 'routeros-mipsbe-4.5.npk' 95.12%
    >>> OK: Файл 'routeros-mipsbe-4.5.npk' загружен.

    РАЗМЕР        СОЗДАНО               ИМЯ_ФАЙЛА
    ============================================================­========
    11424494    feb/05/2010 14:58:27  routeros-mipsbe-4.5.npk

    user@host:/home/tikexamples$ Все, кто использовал API /tool/fetch, знают, что команда имеет несколько состояний, и ответы API (предложения) будут продолжать поступать, информируя пользователя API о состоянии команды. Однако даже после того, как команда перейдет в состояние «завершено», ответы не прекращаются. Они будут продолжаться бесконечно, пока пользователь API не отменит команду или не разорвет соединение. GEM в 3.0.2 автоматизирует отмену команды, когда используется /tool/fetch с помощью функции GEM interactive_client, или можно использовать новый метод GEM MTik#fetch(url, filename) – см. пример скрипта tikfetch.rb для примера использования (вывод которого показан выше). Наслаждайтесь! Aaron out.
     
     
     
    astounding
    Guest
    #5
    0
    24.04.2010 08:16:00
    Вышли обновления для Ruby MikroTik API Gem: доступна исправление ошибок для версий 3.0.x, версия 3.0.5 здесь: http://www.aarongifford.com/computers/mtik/latest/pkg/mtik-3.0.5.gem Также доступна версия с исправлением ошибки И небольшим расширением функциональности (и небольшим изменением библиотечного метода MTik::Connection.fetch() – смотрите файл CHANGELOG.txt на моём сайте): http://www.aarongifford.com/computers/mtik/latest/pkg/mtik-3.1.0.gem Документация/прочее доступна здесь: http://www.aarongifford.com/computers/mtik/index.html и http://www.aarongifford.com/computers/mtik/latest/doc/index.html И не забывайте про Wiki MikroTik: http://wiki.mikrotik.com/wiki/API_Ruby_class Спасибо Allan Eising и Søren Daugaard за сообщения об ошибках и патчи! Приятного использования! Aaron out.
     
     
     
    Eising
    Guest
    #6
    0
    24.04.2010 10:27:00
    Рад помочь (и у Сёрена тоже)! Продолжай в том же духе с API, с ним действительно приятно работать.
     
     
     
    astounding
    Guest
    #7
    0
    12.01.2011 21:25:00
    Вышли обновления для Ruby MikroTik API Gem! Последняя версия гема – 3.1.2, доступна через ruby gems: `gem install mtik`. Или можно скачать гем с моего сайта: http://www.aarongifford.com/computers/mtik/latest/pkg/mtik-3.1.2.gem. Исходный код доступен здесь: http://github.com/astounding/mtik/. Документация онлайн: http://www.aarongifford.com/computers/mtik/index.html http://www.aarongifford.com/computers/mtik/latest/doc/index.html Дополнительные примеры можно найти на Wiki MikroTik: http://wiki.mikrotik.com/wiki/API_Ruby_class. Подробности о внесенных изменениях смотрите в файле CHANGELOG.txt или в сообщениях коммитов на github. Всем, чей код напрямую обращался к переменной экземпляра MTik::Request.state, нужно учесть изменение типа (была String, теперь Symbol) и изменение написания состояния отмены (было cancelled, теперь canceled). Ошибки или другие проблемы можно сообщить через github или связаться с автором (со мной) через мой сайт.

    Aaron out.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры