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

    Скрипт событий Mikrotik: новый подход

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт событий Mikrotik: новый подход, RouterOS
     
    osamahfarhan
    Guest
    #1
    0
    27.05.2024 20:56:00
    Привет! Я придумал новый подход к скриптингу, как думаешь, что насчёт такого скрипта: эта функция запускается, когда 1 — добавляется новый пользователь, 2 — пользователь меняется в /ip hotspot user:

    :global EventHandler do={
     /log info "Новое событие, имя пользователя=$Name изменено";
     :return 0;
    };

    :execute {
     :global EventHandler;
     /ip hotspot user print follow-only where [$EventHandler Name=$name];
    };

    :delay 2s;

    /ip hotspot user add name=123321

    Подробнее на https://github.com/osamahfarhan/mikrotik-events
     
     
     
    optio
    Guest
    #2
    0
    30.08.2024 10:32:00
    Зависит от того, как всё запускается и какие нужны задачи. Без :execute, если выполнять команды напрямую из CLI, будет интерактивный режим. А если запускать команды из сохранённого скрипта после print follow-only, то ... не будет выполнено, потому что это интерактивный режим и он ждёт. :execute запускает команды в фоновом режиме, и консоль не блокируется, можно выполнять другие команды сразу после.
     
     
     
    Sertik
    Guest
    #3
    0
    28.08.2024 08:54:00
    :global EventHandler do={ /log info "Подключен новый Wi-Fi клиент=$Name"; :return true; }; :execute { :global EventHandler; /ip dhcp-client print follow-only where [$EventHandler Name=$name] }; И в таком виде ваш подход будет работать при подключении нового Wi-Fi клиента?
     
     
     
    Sertik
    Guest
    #4
    0
    28.08.2024 09:10:00
    Или в функции обязательно нужно написать :return 0?
     
     
     
    Sertik
    Guest
    #5
    0
    28.08.2024 11:25:00
    Отвечу сам… Сообщения приходят и при подключении, и при отключении wifi-клиента. Это минус…
     
     
     
    optio
    Guest
    #6
    0
    28.08.2024 12:36:00
    Вызывает функцию EventHandler при любом изменении, передаёт статус (или другое свойство конфигурации, если нужно) в качестве аргумента функции и внутри неё проверяет его значение…
     
     
     
    Sertik
    Guest
    #7
    0
    29.08.2024 09:35:00
    Понял, спасибо. Очень приятный приём.
     
     
     
    Sertik
    Guest
    #8
    0
    30.08.2024 06:37:00
    Кстати, кто-нибудь может объяснить, почему здесь используется :execute, если print follow уже запускает отдельный процесс? Можно ли обойтись без :execute?
     
     
     
    Sertik
    Guest
    #9
    0
    12.09.2024 09:56:00
    Оказалось, что метод работает, но не всегда…

    :global funcEventHandler do={
       :delay 1s
       :log warning $1
       :if (([/system script environment get [/system script environment find name=$1] value]="(code)") \
                               or ([:len [:find [/system script environment get [/system script environment find name=$1] value] "(eval"]]>0)) do={
           /log warning "В $1 добавлен новый элемент"
       }
       :return 0
    }

    :execute {
       :global funcEventHandler
       /system script environment print follow-only where [$funcEventHandler $name]
    }

    По команде /system script environment print follow-only where вообще не происходит никакой реакции на появление, изменение или удаление новых записей…
     
     
     
    osamahfarhan
    Guest
    #10
    0
    04.10.2024 19:59:00
    Похоже, ты забыл вставить текст для перевода. Пожалуйста, предоставь сам текст!
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры