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

    /tool fetch - в переменную

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    /tool fetch - в переменную, RouterOS
     
    zervan
    Guest
    #1
    0
    04.03.2017 07:33:00
    Здравствуйте, у меня есть такой скрипт:  
    :local IP "10.111.0.22"  
    :local name "Senzi"  

    :local file "sdcard/json-$name.txt"  
    /tool fetch url="http://$IP/jsonrpc?request={\"jsonrpc\":\"2.0\",\"method\":\"Player.GetActivePlayers\",\"id\":1}" mode=http dst-path=$file  
    :delay 1  
    :local json [/file get $file contents]
    :if ([:find $json "video"] + 0 = 0) do={
     /log info "TV $name play"  
     /tool fetch url="http://$IP/jsonrpc?request={\"jsonrpc\":\"2.0\",\"method\":\"Player.Open\",\"params\":{\"item\":{\"playlistid\":0},\"options\":{\"repeat\":\"all\"}},\"id\":1}" mode=http keep-result=no  
    }  
    /file remove $file  

    Скрипт работает, но у меня их несколько (разные IP и имена), и меня беспокоят две вещи:  
    — каждый раз создаётся файл, и при этом используется флеш или SD-карта  
    — лог забивается сообщениями “info - fetch: file … downloaded”  

    Я бы хотел запускать скрипт каждые несколько минут. Можно ли его как-то улучшить? Было бы здорово, если бы файл не нужен был — возможно ли сделать fetch сразу в переменную?
     
     
     
    genesispro
    Guest
    #2
    0
    13.04.2017 13:08:00
    У меня похожая проблема: хочу считать результат fetch — 1 или 0, и если 1, то что-то сделать, если 0 — ничего не делать. Но приходится каждый раз записывать в флэш, чтобы потом прочитать. К сожалению, должно быть возможно сделать что-то вроде: local answer [/tools fetch url=“ http://example.com” keep-result=no]. Буду признателен за любые решения.
     
     
     
    yyyxyyyz
    Guest
    #3
    0
    12.06.2017 09:56:00
    +1 полезно на сайте с исходным кодом API
     
     
     
    nelfou
    Guest
    #4
    0
    06.03.2018 14:53:00
    У меня так же, это было бы очень удобно. Мой обходной путь — отправлять текущее состояние с параметрами URL, а если менять нечего, HTTP-сервер отвечает кодом статуса 400. Это вызывает ошибку на стороне mikrotik и прерывает скрипт, не записывая никаких файлов или записей в журнал.
     
     
     
    AvAkS
    Guest
    #5
    0
    03.06.2018 15:01:00
    Это решение не такое хорошее, как могло бы быть. «Ошибка/не ошибка» — это как ответ в виде «0» или «1». Но если я хочу отправить данные на Mikrotik (например, обновления параметров) в ответ на get-запрос — я не могу использовать это решение. В прошивке 6.42 появилась хорошая новость: «*) fetch — добавлена опция «output» для всех режимов, чтобы можно было возвращать результат в файл, переменную или игнорировать его». Возможно, это именно то, что мы все искали? Кто-нибудь использует эту опцию («output»)? Официальная вики не даёт никаких инструкций по её применению. Как мы можем использовать параметр «output»?
     
     
     
    ssbaksa
    Guest
    #6
    0
    07.06.2018 07:24:00
    Это всё ещё не работает. Ниже ответ от support@mikrotik.com. Было бы здорово, но...  

    Здравствуйте,  
    На данный момент нельзя считать это значение из переменной. К сожалению, нам пока не удалось закончить эту новую функцию, она ещё требует доработки. Следите за нашим changelog, мы обновим информацию, когда будет добавлена новая возможность в fetch tool, позволяющая читать полученные данные.  

    С уважением,  
    Martins S.
     
     
     
    zervan
    Guest
    #7
    0
    27.09.2018 17:18:00
    Начиная с RouterOS 6.43, можно сразу записывать в переменную, файл не нужен:  
    :local IP "10.111.0.21"  
    :local name "Povazie"  

    /tool fetch url="http://$IP/jsonrpc?request={\"jsonrpc\":\"2.0\",\"method\":\"Input.Select\",\"id\":1}" mode=http keep-result=no  
    :local json [/tool fetch url="http://$IP/jsonrpc?request={\"jsonrpc\":\"2.0\",\"method\":\"Player.GetActivePlayers\",\"id\":1}" mode=http as-value output=user]
    :if ([:find ($json->"data") "video"] + 0 = 0) do={
     /log info "TV $name играет"  
     /tool fetch url="http://$IP/jsonrpc?request={\"jsonrpc\":\"2.0\",\"method\":\"Player.Open\",\"params\":{\"item\":{\"directory\":\"/home/osmc/Movies\"},\"options\":{\"repeat\":\"all\"}},\"id\":1}" mode=http keep-result=no  
    }  
    Я не совсем понимаю, что значит output=user, но без этого не обойтись.
     
     
     
    mrz
    Guest
    #8
    0
    29.09.2018 05:32:00
    Это значит, что вывод fetch будет отправлен в пользовательскую переменную.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры