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

    Скрипт для отправки email при входе пользователя в точку доступа Wi-Fi.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт для отправки email при входе пользователя в точку доступа Wi-Fi., RouterOS
     
    Ehman
    Guest
    #1
    0
    23.01.2013 18:57:00
    Привет, нужна скрипт, которая будет отправлять мне письмо каждый раз, когда новый пользователь подключается к точке доступа, но чтобы письмо отправлялось только один раз, а не каждый раз при входе пользователя, иначе я могу получить тысячу писем за неделю. И еще, было бы круто, если бы она могла фильтровать имена пользователей перед отправкой, например, отправлять письмо только если имя пользователя начинается с "AD…" или что-то вроде того. Задача в том, чтобы отслеживать, сколько ваучеров использовано из определенной партии. Кто-нибудь может помочь с этим, пожалуйста?
     
     
     
    Ehman
    Guest
    #2
    0
    07.02.2013 00:09:00
    Может кто-нибудь помочь, пожалуйста? Нужно сделать так, чтобы этот скрипт работал, когда включен "логин по MAC-адресу", потому что логин по MAC-адресу совершенно сбивает его с толку.
     
     
     
    skot
    Guest
    #3
    0
    08.02.2013 00:00:00
    Как ты добавляешь пользователей с MAC-адресами? Добавляешь ли ты пользователя в привязки IP с Типом:Bypassed (http://forum.mikrotik.com/t/hotspot-mac-by-radius-auth/22546/1)? Когда я использую этот метод, клиент обходится, и поэтому логина нет. Соответственно, скрипт не запускается. А ты создаешь нового пользователя с именем, равным MAC-адресу, и пустым паролем (http://forum.mikrotik.com/t/hotspot-mac-by-radius-auth/22546/1)? Скрипт работает, когда я использую этот метод. Или ты используешь какой-то другой способ?
     
     
     
    Ehman
    Guest
    #4
    0
    08.02.2013 00:33:00
    Привет!

    Пользователи добавлены в базу данных Radius Manager 4, использует freeradius. Я не добавляю пользователей на маршрутизаторы напрямую, только NAS-устройства в моей конфигурации. Похоже, система берёт MAC-адрес и делает из него имя пользователя. И на профиле Hotspot Server, в разделе MAC Auth. Password… поле пустое, пароль не нужен. Всё добавляется на стороне radius-сервера.

    По какой-то причине, когда устройство логинится по MAC, скрипт просто падает и перестаёт выполняться.

    Под адресной книгой: 2C:A8:35:83:5B:4C - HSLOGIN,feb/07/2013,22:04:48, а после этого просто пишет: "User1 вошёл в систему, соответствует фильтру имени", и скрипт останавливается. Но если снять галочку "Вход по MAC", то скрипт работает на 100%. Это очень странно.
     
     
     
    skot
    Guest
    #5
    0
    08.02.2013 02:43:00
    Ну и получается, что после того как первый пользователь macOS залогинится, скрипт перестает работать для всех остальных? Хм…
     
     
     
    Ehman
    Guest
    #6
    0
    08.02.2013 02:46:00
    Да, точно, друг, и я не понимаю, почему оно так делает.
     
     
     
    skot
    Guest
    #7
    0
    09.02.2013 18:56:00
    Похоже, скрипт зависал на переменной $user… не понимаю почему, так как в первый раз он работал корректно. Поэтому я преобразовал $user в строку и использовал её вместо переменной по всему скрипту. Теперь, кажется, всё работает. Дайте знать, если у вас тоже заработало! v3

    # КОНФИГУРАЦИЯ --------------------------------------------\

    # Адрес электронной почты для отправки
    :local emailaddress "email@domain.com";

    # Как долго пользователь остаётся в списке адресов
    :local timeout 30d;

    # Фильтр имён, обрабатывать только имена пользователей, которые начинаются с этой строки (регистр важен)
    # Если хотите разрешить всем пользователям, оставьте двойные кавычки: :local nameFilter ("");
    :local nameFilter ("AD","ad","Ad","aD");

    # КОНЕЦ КОНФИГУРАЦИИ ----------------------------------------/

    :local userStr [:tostr $user];

    # Флаг соответствия
    :local match 0;
    # Проверить каждый элемент nameFilter
    :foreach i in=$nameFilter do={
    # если имя пользователя начинается с nameFilter, есть совпадение
      if ([:find "$userStr" "$i"] = 0) do={
         :set match 1;
      }
    }
    if ($match = 1) do={
      /log info "[HOTSPOT] - $userStr - вошёл в систему, соответствует фильтру имени";

    # Установить переменные даты и времени
      :local date [/system clock get date];
      :local time [/system clock get time];
    # Получить IP-адрес пользователя
      :local ip [/ip hotspot active get [find user="$userStr"] address];
    # Объявить несколько переменных
      :local emailsubject;
      :local emailbody;

    # Если пользователя НЕТ в списке адресов
      :if ([:len [/ip firewall address-list find list~"^$userStr - HSLOGIN"]] = 0) do={
         /log info "[HOTSPOT] - $userStr - не найден в списке адресов";

    # Добавить правила брандмауэра, которые добавят запись в динамический список адресов
         /ip firewall filter add action=add-src-to-address-list address-list="$userStr - HSLOGIN,$date,$time" address-list-timeout=$timeout chain=pre-hs-input disabled=no src-address=$ip comment="$userStr - HSLOGIN";
         /ip firewall filter add action=add-src-to-address-list address-list="$userStr - HSLOGIN,$date,$time" address-list-timeout=$timeout chain=forward disabled=no src-address=$ip comment="$userStr - HSLOGIN";

         :local counter 0;
    # Количество попыток добавления пользователя в список адресов, прежде чем сдаться
         :local limit 60;
    # Задержка между попытками
         :local delaytime 5s;
    # Цикл несколько раз, чтобы проверить, добавлен ли пользователь в список адресов
         :while (counter < $limit) do={
            :set counter ($counter + 1);
            /log info "[HOTSPOT] - $userStr - проверяет, находится ли пользователь в списке адресов - попытка $counter из $limit";
    # Ждать между проверками списка адресов
            :delay $delaytime;
    # если запись в списке адресов найдена, продолжить
            :if ([:len [/ip firewall address-list find list~"^$userStr - HSLOGIN"]] = 1) do={
               /log info "[HOTSPOT] - $userStr - пользователь добавлен в список адресов, отправка email";
    # Установить переменные темы и тела email
               :set emailsubject "Новый вход в систему Hotspot ($userStr)";
               :set emailbody "Пользователь: $userStr\r\n$time, $date\r\nIP: $ip\r\nИстекает через: $timeout";
    # увеличить счётчик
               :set counter ($limit+10);
            } else={
    # если достигнут лимит попыток добавления, отправить email
               :if ($counter = $limit) do={
                  /log info "[HOTSPOT] - $userStr - не удалось добавить пользователя в список адресов, отправка email";
    # Установить переменные темы и тела email
                  :set emailsubject "Новый вход в систему Hotspot ОШИБКА ($userStr)";
                  :set emailbody "ОШИБКА: не удалось добавить в список адресов, требуется расследование.\r\n\r\nПользователь: $userStr\r\n$time, $date\r\nIP: $ip\r\n";
               }
            }
         }
    # удалить правила брандмауэра потом
         /ip firewall filter remove [find comment="$userStr - HSLOGIN"];
    # отправить email
         /tool e-mail send to="$emailaddress" subject="$emailsubject" body="$emailbody";
    # если пользователь УЖЕ есть в списке адресов
      } else={
         /log info "[HOTSPOT] - $userStr - уже есть в списке адресов";
      }
    # если пользователь не соответствует фильтру имени, зафиксировать информацию
    } else={
      /log info "[HOTSPOT] - $userStr - вошёл в систему, не соответствует фильтру имени";
    }
     
     
     
    Ehman
    Guest
    #8
    0
    09.02.2013 19:19:00
    Попробую сейчас эту опцию: :local nameFilter (“”);
     
     
     
    Ehman
    Guest
    #9
    0
    09.02.2013 19:31:00
    Вроде бы всё теперь работает на 100%, спасибо, дружище!
     
     
     
    skot
    Guest
    #10
    0
    09.02.2013 21:55:00
    Я не могу перевести "YW".
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры