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

    API Bug ?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    API Bug ?, RouterOS
     
    rubessw
    Guest
    #1
    0
    21.08.2012 12:15:00
    Пытаюсь запустить команду через API. Делаю это в Mikrotik API studio: `/ip/hotspot/host/remove =numbers=*8`. *8, будучи последней сессией, работает на 100%, даже из терминала работает на 100%, но вот это:

    ```php
    require('api.class.php');

    $API = new routeros_api();

    $API->debug = false;

    if ($API->connect('192.168.1.50', 'xxxx', 'xxxx')) {

    $API->write('/ip/hotspot/host/remove');
    $API->write('=numbers=*8);

    $READ = $API->read(false);
    $ARRAY = $API->parse_response($READ);

    print_r($ARRAY);

    $API->disconnect();

    }
    ```

    возвращает:

    ```
    Array ( [!trap] => Array ( [0] => Array ( [message] => no such command prefix ) ) )
    ```

    Какие идеи? Другие команды работают нормально.
     
     
     
    rmichael
    Guest
    #2
    0
    21.08.2012 12:26:00
    Ты случайно не забыл закрывающую одинарную кавычку?
     
     
     
    boen_robot
    Guest
    #3
    0
    21.08.2012 12:46:00
    С этим клиентом нужно явно указать, что ты не готов отправить предложение, используя `false` в качестве второго аргумента для `write()`. Попробуй так:

    ```php
    require('api.class.php');

    $API = new routeros_api();

    $API->debug = false;

    if ($API->connect('192.168.1.50', 'xxxx', 'xxxx')) {

    $API->write('/ip/hotspot/host/remove', false);
    $API->write('=numbers=*8');

    $READ = $API->read(false);
    $ARRAY = $API->parse_response($READ);

    print_r($ARRAY);

    $API->disconnect();

    }
    ```
    (Также исправил вышеупомянутую синтаксическую ошибку).

    P.S. Мне бы очень хотелось узнать, что заставило тебя выбрать именно этого клиента, а не другого.
     
     
     
    rubessw
    Guest
    #4
    0
    21.08.2012 13:39:00
    <?php

    require('api.class.php');

    $API = new routeros_api();

    $API->debug = false;

    if ($API->connect('192.168.1.50', 'xxxx', 'xxxx')) {

    $API->write('/ip/hotspot/host/remove', false);
    $API->write('=numbers=*8');

    $READ = $API->read(false);
    $ARRAY = $API->parse_response($READ);

    print_r($ARRAY);

    $API->disconnect();

    } Отлично, сработало прекрасно! Следующий вопрос: возможно ли сделать это по MAC-адресу? С вашим клиентом было бы проще удалить сессию на основе MAC-адреса пользователя?
     
     
     
    boen_robot
    Guest
    #5
    0
    21.08.2012 15:07:00
    Я думал, ты никогда не спросишь. С любым клиентом нужно отправлять запрос с запросом печати, чтобы получить ID, и передавать его в команду удаления. Думаю, это сделать проще с моим клиентом, но я предвзятый. Вот пример:

    ```php
    namespace PEAR2\Net\RouterOS;
    require_once 'PEAR2_Net_RouterOS-1.0.0b3.phar';

    $client = new Client('192.168.1.50', 'xxxx', 'xxxx');

    $id = $client->sendSync(
       new Request('/ip hotspot host print .proplist=.id', Query::where('mac-address', '00:00:00:00:00:01'))
    )->getArgument('.id');
    //$id теперь содержит ID записи, которую мы нацеливаем

    $removeRequest = new Request('/ip/hotspot/host/remove');
    $removeRequest->setArgument('numbers', $id);
    $client->sendSync($removeRequest);

    Как есть, он удаляет только первое совпадение. С небольшими изменениями, ты можешь сделать так, чтобы он удалял все совпадения. Код можно сократить ещё сильнее (особенно если у тебя PHP 5.4), но я оставил его более подробным, чтобы ты понимал, что происходит. Смотри эту страницу для большего количества примеров.
    ```
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры