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

    Как получить общее количество скачанных и загруженных данных пользователя через REST API в /user-manager/user/?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Как получить общее количество скачанных и загруженных данных пользователя через REST API в /user-manager/user/?, RouterOS
     
    Samoeltheroot
    Guest
    #1
    0
    20.07.2023 16:51:00
    Привет, сообщество! Сейчас я работаю над проектом, в котором нужно мониторить данные пользователей в системе через REST API. Конкретно, мне нужно получить общие статистики по скачиванию и загрузке пользователей, а также их время работы (uptime). Раньше я мог получить эту информацию с помощью команды /user-manager/user/monitor 1,2,3. Но теперь я ищу способ сделать то же самое программно через REST API.

    Я пробовал такой curl-запрос:

    curl --location 'https://router/rest/user-manager/user/monitor' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic aXJhbjgwLWFwaTpxMTMy' \
    --data '{"numbers":1}'

    Однако ответ, который я получаю, не соответствует ожиданиям — данных нет.

    Я изучил документацию по API, но не нашёл конкретных эндпоинтов или методов, связанных с мониторингом пользователей. Интересно, нет ли альтернативного эндпоинта или какого-то конкретного вызова API, который позволит получить эти данные?

    Если у кого-то есть опыт работы с этим REST API или вы сталкивались с похожей задачей, буду очень признателен за помощь. Любые примеры кода, ссылки на API или советы будут очень полезны.

    Заранее спасибо за поддержку!
     
     
     
    kvee
    Guest
    #2
    0
    07.09.2023 16:24:00
    Я тоже хотел бы узнать. Запускать эти URL через метод GET всегда возвращает ошибку 400 bad request:  
    /rest/user-manager/user/monitor?numbers=2  
    /rest/user-manager/user/monitor/2  
    /rest/user-manager/user/monitor/*2  

    Однако, если использовать метод POST с телом запроса {"numbers": [2]}, возвращается сообщение missing =.id=. Если использовать тело POST {".id": "*8"}, то возвращается пустой массив — с атрибутом numbers или без него.
     
     
     
    Amm0
    Guest
    #3
    0
    07.09.2023 17:59:00
    У меня нет UM для теста, но нужно использовать POST с командой «monitor». Лучше воспользоваться .query с параметром name= (или любым другим атрибутом, кроме «numbers»/«.id»), так как с «query» можно работать сразу в одном запросе. При использовании команды «monitor» результаты буферизуются 60 секунд перед отправкой, поэтому ниже показано с «once», чтобы получить ответ сразу. Что-то вроде этого должно работать, можно изменить переменную env в начале для теста, добавлен вывод логов:

    USER=admin  
    ROUTER=192.168.88.1  
    NAME=myuser  
    curl -l -u $USER -X POST http://$ROUTER/rest/user-manager/user/monitor -H "Content-Type: application/json" --data '{ "once": true, ".query": ["name=$NAME"]}' --trace-ascii /dev/stdout
     
     
     
    kvee
    Guest
    #4
    0
    07.09.2023 18:22:00
    Извините, но это не работает. По-прежнему возникает ошибка «Bad Request». { “detail”: “missing =.id=”, “error”: 400, “message”: “Bad Request” }
     
     
     
    Amm0
    Guest
    #5
    0
    07.09.2023 18:33:00
    Ну, как насчёт попробовать .id. У меня нет user manager, но если у тебя есть CLI-команда, которая делает то, что нужно, то её будет проще «портировать», чтобы сначала убедиться, что операция работает в CLI… Но используй .id, это будет выглядеть примерно так:  
    curl -l -u $USER -X POST http://$ROUTER/rest/user-manager/user/monitor -H "Content-Type: application/json" --data '{ "once": true, ".query": [".id=*8"]}' --trace-ascii /dev/stdout

    Тебе нужно заменить $USER и $ROUTER на свои данные и знать .id, который использовать, из команды «/user-manager/user/print show-ids». Просто добавить * к тому, что выводит обычная команда «print», не получится — нужна именно «print show-ids» для работы с полем .id. В REST API обычно нет numbers= (или использовать это было бы плохой идеей, если и разрешено).  

    P.S. .query принимает массив строк, поэтому знак равенства — это просто часть строки… значит ".id=*8" правильный синтаксис, а вот [“.id”=“*8”] был неправильным (я скопировал твой и забыл исправить).

    [ Bash и особенности экранирования в shell и RouterOS быстро начинают путать — поэтому полезно знать, какая CLI-команда делает то, что тебе нужно. ]
     
     
     
    kvee
    Guest
    #6
    0
    08.09.2023 05:32:00
    Извините, но это не работает.  
    {  
       "once": true,  
       ".query": [".id=*8"]
    }  
    или  
    {  
       "once": true,  
       ".query": ".id=*8"  
    }  
    или  
    {  
       "once": true,  
       ".query": ".id=*8"  
    }  
    — все дают одинаковый результат: «bad request» с сообщением «detail»: «missing =.id=».  

    НО!! Это работает:  
    {  
       "once": true,  
       ".id": "*8"  
    }  

    Результат:  
    [ {
       "active-sessions": "1",  
       "active-sub-sessions": "1",  
       "actual-profile": "xxxxx-xxxxxx",  
       "attributes-details": "Private info Name:xxxxx:string:0xxxxxx",  
       "total-download": "874034635",  
       "total-upload": "48807958",  
       "total-uptime": "1d5h13m23s"  
    } ]  

    Значение «.id» — это «*8» из id пользователя в user manager. Спасибо за подсказку про «once», это действительно нужно, чтобы всё заработало.
     
     
     
    alissin
    Guest
    #7
    0
    13.07.2024 12:59:00
    Вид в Postman и ошибка: https://ibb.co/MSDY2J1  
    Привет, мне тоже нужно получить статистику пользователей, я пытался, но не получилось. Использую Postman для теста, а потом скрипт на PHP. Но получаю 404, URL правильный, я проверял — чтобы получить всех пользователей, он сработал!!! Но, почему-то, для монитора выбрасывает 404. Я даже проверял через ChatGPT OpenAI, но результата нет… Может, кто-то помочь? Это как-то связано с конфигурацией Mikrotik?  
    ОБНОВЛЕНИЕ: не знаю, как отменить сообщение, поэтому просто скажу — проблема была в ID, который я использовал, по всей видимости, его не существует. Я взял другой — и всё заработало.
     
     
     
    VolleyTom
    Guest
    #8
    0
    13.10.2024 07:14:00
    Есть ли способ считать все данные статистики пользователей UserManager за один запрос? В WinBox тоже выводится вся эта информация.
     
     
     
    Amm0
    Guest
    #9
    0
    13.10.2024 14:51:00
    Если у вас есть список .id, разделённых запятыми, которые можно использовать в user-manager/user/monitor — JSON для .id всё ещё строка, но он может принимать несколько .id.  
    Пример:  
    curl -k -u $USER:$PASSWORD -X POST http://$ROUTEROS/rest/user-manager/user/monitor --json '{".id": "*1,*2", "once": true}'  

    Результат:  
    [{“active-sessions”:“4”,“active-sub-sessions”:“4”,“attributes-details”:“Mikrotik-Group:full:string:0x000000,Mikrotik-Group:full:string:0x00000”,“total-download”:“0”,“total-upload”:“0”,“total-uptime”:“14h47m5s”},{“active-sessions”:“0”,“active-sub-sessions”:“0”,“attributes-details”:“”,“total-download”:“0”,“total-upload”:“0”,“total-uptime”:“0s”}]

    Но сделать это за один вызов нельзя, потому что список .id нужно сначала получить из другого вызова GET …/user-manager/user/get или POST …/print и преобразовать в разделённый запятыми список, используемый выше.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры