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

    Запуск скрипта при регистрации клиента в сети

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Запуск скрипта при регистрации клиента в сети, RouterOS
     
    Shoe
    Guest
    #1
    0
    29.07.2014 18:09:00
    Привет! Я ищу способ запустить скрипт, когда кто-то подключается к сети (возможно, определить это по DHCP-запросу от конкретных MAC-адресов?). Конкретно хотелось бы вызвать URL (REST API), чтобы включить свет (Philips Hue) в момент успешного подключения его/её устройства к сети. Я искал примеры, но не нашёл ничего подходящего — возможно, искал неправильно. Может, кто-нибудь подскажет пример или даст ссылку с похожим решением? Спасибо, Мартин.
     
     
     
    cdiedrich
    Guest
    #2
    0
    01.09.2014 11:38:00
    Ты можешь попробовать сделать это с помощью скрипта для DHCP-лиза. В этом скрипте у тебя есть доступ к переменной $leaseActMAC, поэтому легко проверить, совпадает ли она с нужным MAC-адресом. Можно вызвать URL с помощью команды /tool fetch. – Крис
     
     
     
    Mallabik
    Guest
    #3
    0
    23.09.2014 14:44:00
    Shoe, у тебя получилось это запустить?
     
     
     
    Shoe
    Guest
    #4
    0
    23.09.2014 15:52:00
    @Chris: Спасибо за твой вклад, очень признателен! Думаю, это может сработать. @Mallabik: К сожалению, нет. Мои навыки программирования не так хороши, поэтому я искал пример скрипта для DHCP Lease, но не смог найти что-то похожее на мой подход. Две вещи, в которых я не уверен, как реализовать: Запуск скрипта при новом DHCP-лизе (или мне нужно постоянно проверять в цикле?) Как отличить «новый» лиз от существующего (время истечения лиза, сейчас 3 дня, не сбрасывается, если клиент перестраивается в сеть после одного-двух дней отсутствия. Есть ли переменная «last seen» для MAC-адресов?)
     
     
     
    psamsig
    Guest
    #5
    0
    25.09.2014 07:05:00
    Прочитайте о ‘lease-script’ здесь http://wiki.mikrotik.com/wiki/Manual:IP/DHCP_Server и http://wiki.mikrotik.com/wiki/Manual:Scripting
     
     
     
    macns
    Guest
    #6
    0
    15.10.2014 06:37:00
    Я работаю над чем-то похожим, в основном чтобы получать уведомления, когда определённый хост подключается. Скрипт «lease script», который запускается при выдаче аренды DHCP-сервером, кажется подходящим вариантом. Хотя в RouterOS 5.x нет функции «lease script», в версии 6.x она есть. Так что если хочется сделать это на 5.x, можно использовать запланированный скрипт, который запускается каждые 10 секунд, но это не очень эффективно и, скорее всего, вызовет проблемы с производительностью. Другой способ запустить скрипт при подключении хоста к сети — использовать hotspot. Можно запускать скрипт при входе пользователя, что может происходить автоматически, если разрешить вход по MAC-адресу. Это значит, что пользователь или устройство должны хотя бы один раз войти с именем пользователя и паролем, чтобы их MAC-адрес сохранился и запомнился при следующем входе. Я в этом новичок, так что исправьте, если что не так.  

    ИЗМЕНЕНИЕ: Ниже пример проверенного и работающего DHCP lease-скрипта: он сверяет IP-привязки hotspot с соответствующим MAC-адресом, меняйте URL сервера и отключайте строки с логированием, которые не нужны. Пока не уверен, когда именно и как скрипт вызывается — разбираюсь дальше, может кто-то поможет?  

    Он работает на RouterOS 6.x(?), который поддерживает запуск скрипта при выдаче аренды DHCP (в 5.x этого нет).  

    Встроенные "глобальные" переменные, доступные в скрипте:  
    leaseBound — равно «1», если аренда выдана, иначе «0»  
    leaseServerName — имя DHCP-сервера  
    leaseActMAC — активный MAC-адрес  
    leaseActIP — активный IP-адрес  

    Скрипт запускается дважды: при первом запуске leaseBound=0, при втором — 1.  

    Скрипт КОНЧАЕТСЯ здесь, если leaseBound = 0:  
    if ([:tonum $leaseBound] < 1) do={ :log info “lease mac: $leaseActMAC не выдан, скрипт завершает работу”; return }

    Ваш URL здесь, GET-переменные добавятся позже:  
    local serverUrl “http://www.yourserver.com/api”;  

    Для отладки, чтобы проверить свой MAC, поместите скрипт в репозиторий и запустите вручную:  
    раскомментируйте две строки ниже и закомментируйте строку #26  
    #:local ourMAC “CC:FA:00:B4:1D:8B”;  
    #:local ipBindingID [/ip hotspot ip-binding find mac-address=$ourMAC];

    Сначала проверяем, есть ли MAC в привязках hotspot, получаем ID (NULL, если нет):  
    local ipBindingID [/ip hotspot ip-binding find mac-address=$leaseActMAC];

    Для отладки закомментируйте ниже строчки:  
    log info “ip binding id: $ipBindingID”;  
    log info “новая аренда: MAC: $leaseActMAC”;  
    log info “Имя сервера: $leaseServerName”;  
    log info “Lease Bound: $leaseBound”;  
    log info “IP аренды: $leaseActIP”;  

    Если ([:len $ipBindingID] > 0) делаем:
    # запись существует, комментарием в ip-binding может быть имя пользователя  
    local macComment [/ip hotspot ip-binding get $ipBindingID comment];

    # логируем совпадение  
    log info "аренда есть в ip-bindings с комментарием: $macComment";  

    # GET-переменные, которые добавятся к URL  
    local getVars "?lease_act_mac=$leaseActMAC";  
    set getVars ($getVars."&lease_server_name=$leaseServerName");  
    set getVars ($getVars."&lease_bound=$leaseBound");  
    set getVars ($getVars."&lease_act_ip=$leaseActIP");  
    set getVars ($getVars."&mac_comment=$macComment");  

    # делаем запрос на веб-сервер  
    # и сохраняем ответ сервера в файл для справки  
    /tool fetch mode=http url=($serverUrl.$getVars) dst-path=http_response.txt;  

    # показываем содержимое файла с ответом сервера  
    local httpResponse [/file get http_response.txt contents];
    log info "Ответ HTTP-сервера: $httpResponse";  
    } else={  
    log info "MAC не найден в ip-bindings";  
    }
     
     
     
    macns
    Guest
    #7
    0
    17.10.2014 07:07:00
    Есть похожая идея с другой функциональностью в другой теме: http://forum.mikrotik.com/t/count-users-with-api/81240/1. Наверняка это не то, что нам нужно, потому что скрипт аренды DHCP не срабатывает каждый раз, когда клиент подключается, например, если MAC-адрес клиента уже есть в таблице аренды и аренда еще не истекла. Поэтому, как я вижу, единственный способ заставить это работать — это скрипт входа/выхода пользователя hotspot.
     
     
     
    Shoe
    Guest
    #8
    0
    17.10.2014 09:01:00
    Огромное спасибо, macns! Твой скрипт — именно то, что я искал, ты просто сделал мой день! Думаю, он отлично подходит под мои задачи, потому что мне не нужно запускать скрипт каждый раз при подключении пользователя. Достаточно один раз за визит, а с помощью lease time я могу задать, сколько времени должно пройти, чтобы считать это новым визитом. Надеюсь, смогу попробовать его на выходных и дать тебе обратную связь.
     
     
     
    macns
    Guest
    #9
    0
    18.10.2014 07:18:00
    Пожалуйста. Перечитывая твоё сообщение, понимаю, что это может быть не совсем то, что ты хотел, но это легко можно изменить.
     
     
     
    Shoe
    Guest
    #10
    0
    25.10.2014 16:07:00
    Только что попробовал — работает безупречно. Мне пришлось немного поправить скрипт, потому что хочу получать URL даже если MAC-адрес не привязан (проверки и запросы к API для управления светом я делаю через PHP-скрипт). Раз уж теперь не нужно нажимать на выключатель, комната уже светлая, как только мы заходим... просто гениально! Ещё раз спасибо macns и всем, кто помог мне в этом.
     
     
     
    macns
    Guest
    #11
    0
    27.10.2014 08:07:00
    Отлично, тогда супер! Просто небольшое замечание: если проверки не нужны, достаточно одной строки, как предлагает boen_robot в http://forum.mikrotik.com/t/count-users-with-api/81240/1  
    /tool fetch url=("http://youserver.com/api\?mac=" . $leaseActMAC)
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры