Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    API вход/выход

    API вход/выход

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    API вход/выход, RouterOS
     
    SurferTim
    Guest
    #1
    0
    17.08.2010 15:13:00
    В данный момент я пишу программу с использованием API для своего Blackberry. В большинстве постов про команды API здесь встречаю такое: Connecting… команда отправлена ответ получен Disconnecting… Ты же не заходишь в систему, отправляешь одну команду, ждёшь один ответ и сразу выходишь, правда? Я выхожу из системы только после того, как выполню все команды. Но при этом использую поток, чтобы открыть, контролировать и закрыть соединение.
     
     
     
    taduikis
    Guest
    #2
    0
    07.10.2010 21:23:00
    Поправьте, если я ошибаюсь, но в RouterOS нельзя закрыть сессию API? По крайней мере, в документации по API об этом ничего не сказано. Я в основном использую PHP-реализацию, и она просто закрывает открытый сокет, что на самом деле не убирает запись из списка активных сессий. Mikrotik ответил, что баг сессий, которые не завершаются по таймауту, исправлен в ROS v5. К сожалению, я пока не хочу переходить на v5, а API-запросы использую очень часто. Проблема в том, что когда ROS выдаёт около 100 вызовов challenge, он начинает отвечать ошибкой «cannot get challenge», и дальше по API уже не подключиться. Перезагрузка как единственный способ вернуть всё в рабочее состояние для меня вообще не вариант, поэтому, может, кто-то из умных ребят подскажет решение или хотя бы развеет мои сомнения, сказав, что с этим ничего не поделать? Мне реально нравится работать с API — это удобно и просто. Всё уже настроено и работает как надо (кроме вот этого сбоя с challenge), переписывать всё на PHP telnet-класс я совсем не хочу. Если бы как-то удалось обойти эту проблему с переполнением сессий, я бы себе спокойно отпуск взял.
     
     
     
    janisk
    Guest
    #3
    0
    08.10.2010 06:43:00
    API закрывает вход в систему, когда вы корректно закрываете соединение. Вы можете использовать команду /quit для выхода, но учтите, что для повторного подключения всё равно придётся закрыть соединение и создать его заново, чтобы получить вызов (challenge). Поэтому смысла использовать /quit нет, ведь всё равно придётся закрывать соединение. API предназначен не для мониторинга, а для других задач, а для мониторинга можно, например, использовать SNMP, например, программу The Dude.
     
     
     
    taduikis
    Guest
    #4
    0
    08.10.2010 13:33:00
    Хорошо, я попробую делать /quit после получения данных или внесения изменений. Не думаю, что это вызовет у меня проблемы, если только это требование с выдачей challenge не применяется. Сейчас я использую PHP API скрипт, который предоставлен в Mikrotik Wiki. Я вообще не модифицировал его, и его применение почти не отличается от примера использования, приведённого на той же странице в Wiki. Не хочу казаться надоедливым, но как вы вообще представляете себе корректное завершение соединения? Я использую API для управления записями в списке адресов фаервола. Кастомная веб-система управления нужна, чтобы включать или отключать доступ в интернет или создавать редиректы на кастомные страницы для конкретных клиентов. Другого способа добиться этого я не вижу, разве что через telnet. Моим клиентам часто приходят дружеские напоминания, что они ещё не оплатили, и им приходится нажимать кнопку «Продолжить просмотр», которая в итоге вызывает API скрипт для удаления записей из addr-list фаервола ROS.
     
     
     
    janisk
    Guest
    #5
    0
    18.10.2010 11:38:00
    Пользователь инициирует закрытие TCP-соединения командой CLOSE. Удалённый TCP-сервер начинает процедуру, отправляя управляющий сигнал FIN. Оба пользователя закрывают соединение одновременно, а когда сокет закрывается, связанные с ним API-сессии тоже завершаются (так и должно быть по задумке).
     
     
     
    taduikis
    Guest
    #6
    0
    18.10.2010 15:38:00
    Я не очень понимаю, как всё обрабатывается после реализации PHP API, и не уверен, что достаточно умею копать глубже. Соединение просто закрывается вызовом fclose() на сокете, который был открыт через fsockopen(). Что ещё можно сделать? Люди жалуются, что другие реализации тоже работают некорректно, так что что здесь вообще нужно исправлять? Кстати, команда /quit тоже не завершает сессию в списке активных.
     
     
     
    dssmiktik
    Guest
    #7
    0
    18.10.2010 21:45:00
    Как уже упоминалось, это ошибка. Не думаю, что её что-то исправит, кроме Mikrotik в версии 5. Версию 4, скорее всего, исправлять не будут. Подробнее можно посмотреть здесь: http://forum.mikrotik.com/t/php-api-connection/33417/1
     
     
     
    zlyZwierz
    Guest
    #8
    0
    07.01.2011 21:55:00
    Пожалуйста, объясните, что вы имеете в виду под «gracefully». Использование API — это не для мониторинга, а для других задач. Для мониторинга можно использовать SNMP, например, The Dude.

    Каково же назначение API? Мониторинг с помощью SNMP — да, это возможно, но сканирование загруженной MT-системы занимает вечность. Да, вы реализовали snmp bulk pdu (круто), но только в версии 5.x, которая сейчас в релиз-кандидате.

    Так сложно ли перенести рабочий API из 3.30 или 5.x в ветку 4.x, а snmp bulk pdu из 5.x — в 4.x? Или у вас просто нет желания этим заниматься?
     
     
     
    SurferTim
    Guest
    #9
    0
    07.01.2011 22:12:00
    Для меня "грейсфул" — это аккуратное закрытие соединения, когда работа закончена. Я использую Java и отдельный поток для общения с роутером. Так если поток зависнет, основная программа сможет его восстановить. Главная программа управляет потоком с помощью векторов, в которых хранятся команды и булевы флаги — своего рода "сигнальные линии" между потоком и программой, как в Unix — fork и pipe. Мой Blackberry отлично справляется с поддержанием соединения. Мой роутер показывает по одному входу и выходу, независимо от того, сколько я сижу в сети и сколько команд отправляю. API проще для новичка, чем CLI.
     
     
     
    zlyZwierz
    Guest
    #10
    0
    07.01.2011 22:29:00
    23:19:50.802868 IP 10.1.1.21.8728 > devel.54230: FP 375:412(37) ack 105 win 2896 <nop,nop,timestamp 579513 8197338>  
    23:19:50.802938 IP devel.54230 > 10.1.1.21.8728: . ack 413 win 108 <nop,nop,timestamp 8197340 579513>  
    23:19:56.160016 IP devel.54230 > 10.1.1.21.8728: F 105:105(0) ack 413 win 108 <nop,nop,timestamp 8198679 579513>  
    23:19:56.161746 IP 10.1.1.21.8728 > devel.4230: . ack 106 win 2896 <nop,nop,timestamp 580049 8198679>  

    Это достаточно аккуратно? (10.1.1.21 — это MT после команды /quit) Какие версии ROS вы используете?
     
     
     
    SurferTim
    Guest
    #11
    0
    07.01.2011 22:34:00
    Как насчёт такого изящного решения? В моей основной программе: Main.Connect = false; Поток уже решает всё остальное. Я использую версии V3.30 и V4.14. ПРИМЕЧАНИЕ: а когда поток закрывает соединение, он делает вот так: Main.Connected = false;
     
     
     
    zlyZwierz
    Guest
    #12
    0
    07.01.2011 22:59:00
    Можешь вставить tcpdump из твоего приложения в момент закрытия соединения?
     
     
     
    SurferTim
    Guest
    #13
    0
    07.01.2011 23:09:00
    Я не уверен, что смогу сделать tcpdump с моего Blackberry. Но зачем мне это нужно? API отвечает без проблем, а роутер показывает логин, правильные изменения и выход из системы. Я могу сразу же снова войти, внести ещё изменения и выйти, не закрывая Java-программу. В основной программе: Main.Connect=true; жду, пока поток не сменит Main.Connected=true.
     
     
     
    zlyZwierz
    Guest
    #14
    0
    07.01.2011 23:15:00
    Я использую python API клиент — немного модифицированную версию примера python клиента с вики: http://wiki.mikrotik.com/wiki/Manual:API
     
     
     
    SurferTim
    Guest
    #15
    0
    07.01.2011 23:22:00
    Мой вариант — это Java-версия того же скрипта, так сказать. Цикл “while1” — это код потока. Но я не вижу, где в этом коде закрывается соединение. ??
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры