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

    Планировщик перестает выполнять скрипт

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Планировщик перестает выполнять скрипт, RouterOS
     
    Stril
    Guest
    #1
    0
    23.08.2021 14:37:00
    Привет! У меня довольно странная проблема. Я использую простой скрипт планировщика на CCR1009:  
    /system scheduler  
    add interval=27m name=pull_blacklists on-event=  
       "/system script run get_blocklists" policy=  
       ftp,reboot,read,write,policy,test,password,sniff  
       start-date=jun/20/2020 start-time=00:05:15  

    Скрипт нормально работает несколько недель, а потом внезапно перестаёт запускаться. В графическом интерфейсе "Next run" больше не обновляется. Есть идеи, почему так происходит? Если в такой ситуации изменить "Start-Time" всего на секунду, то скрипт снова начинает работать (ещё на пару недель).  

    Спасибо за помощь,  
    Stril
     
     
     
    Stril
    Guest
    #2
    0
    17.09.2021 12:20:00
    Привет! СПАСИБО! Это очень помогло. Я изменил скрипт с учётом твоих замечаний. Понятия не имею, почему он сделал то, что должен был, несмотря на неправильные части... Есть ли возможность поймать зависание? Сейчас я отправляю список каждый час, и так как я устанавливаю тайм-ауты для списка «HONEYPOT» меньше часа, должно быть очень мало «двойной отправки». Как работает планировщик, если скрипт не завершился до следующего запуска? Есть ли возможность выйти из «foreach» после x записей? Существует ли что-то вроде условия выхода? Большое спасибо!
     
     
     
    rextended
    Guest
    #3
    0
    17.09.2021 12:24:00
    fetch может вызвать бесконечную задержку, а не бесконечный цикл, всё замораживается, ждёт завершения fetch, это не цикл, который можно автоматически проверить на слишком долгую работу и завершить... Попробуй мой скрипт, если не сработает, добавим асинхронное выполнение fetch. Что-то вроде этого, можешь посмотреть мои сниппеты по ссылке в моей подписи. Автоматическое закрытие через 20 секунд ожидания... :local jobid [:execute script="/tool fetch ............"] :local sec 0 :while (([:len [/sys script job find where .id=$jobid]] = 1) && ($sec < 20)) do={ :set sec ($sec + 1) :delay 1s }
     
     
     
    Stril
    Guest
    #4
    0
    17.09.2021 12:26:00
    Спасибо! Я попробую оба варианта в ближайшие недели и сообщу, если возникнут какие-то проблемы. Спасибо за совет и извините за мою первую реакцию...
     
     
     
    rextended
    Guest
    #5
    0
    17.09.2021 12:29:00
    Без проблем
     
     
     
    ConnyMercier
    Guest
    #6
    0
    17.09.2021 20:39:00
    Быстрый вопрос для гуру @rextended, @SiB, @mkx  
    Вопрос 1: Когда используются параметры start-date и start-time, нужно ли RouterOS пересчитывать следующий запуск каждый раз на основе этих параметров, или только при старте?  
    Вопрос 2: Будет ли разница в производительности, если поменять время запуска расписания на «при старте»?
     
     
     
    rextended
    Guest
    #7
    0
    17.09.2021 07:41:00
    Это нельзя диагностировать, планировщик работает нормально, нужно ещё выложить скрипт, который вы пытаетесь запустить…
     
     
     
    Stril
    Guest
    #8
    0
    17.09.2021 07:57:00
    Привет! На роутере запущено несколько скриптов, и все они работают нормально в течение нескольких недель, а потом внезапно останавливаются одновременно.
     
     
     
    Stril
    Guest
    #9
    0
    17.09.2021 07:07:00
    …Я один вижу эту проблему?
     
     
     
    SiB
    Guest
    #10
    0
    17.09.2021 08:03:00
    В планировщике добавьте строки типа:  
    /log warning "ScriptX Starts"  
    /system script run get_blocklists  
    /log warning "ScriptX End"  

    И в вашем логе появятся подобные записи, которые покажут, работает ли скрипт на самом деле и на каком этапе он прерывается. Попробуйте запустить скрипт вручную и проверить, успешно ли он выполнится.
     
     
     
    Stril
    Guest
    #11
    0
    17.09.2021 08:38:00
    Привет! Скрипты работают отлично! 100%. Единственная проблема в том, что планировщик перестаёт запускать их после нескольких тысяч успешных запусков. Это также видно по «next-run» в планировщике, который в таком случае показывает время в прошлом.
     
     
     
    rextended
    Guest
    #12
    0
    17.09.2021 08:55:00
    @Stril Я просил тебя выложить скрипт здесь для дальнейшего анализа, но твое предположение, что выполненный скрипт идеален и не блокирует планировщик, заставляет меня принять такое решение: помощь с моей стороны заканчивается.
     
     
     
    mkx
    Guest
    #13
    0
    17.09.2021 09:25:00
    Поскольку проблема, по всей видимости, связана с внутренним состоянием вашего роутера, а обычные пользователи не могут ее проанализировать, обсуждать это на (пользовательском) форуме бессмысленно. Думаю, ваши дальнейшие шаги должны быть такими: 1) создать файл supout.rif в момент, когда планировщик перестает выполнять скрипты, и 2) обратиться в техподдержку по адресу support@mikrotik.com.
     
     
     
    SiB
    Guest
    #14
    0
    17.09.2021 09:40:00
    Моё последнее предложение. Сделайте предупреждение в логах для скрипта с максимальным счётчиком запусков — скорее всего, именно он первым столкнётся с проблемой. Далее можно бесплатно воспользоваться https://deadmanssnitch.com/plans — это триггер, который даёт вам URL. Если этот URL не вызывается в течение заданного времени, портал предупреждает вас, что не видит новых запросов. Я использую https://deadmanssnitch.com и похожие проекты, чтобы получать уведомления, когда какой-то процесс не завершил работу. В основном они созданы для проверки заданий CRON в Linux, но вы можете использовать их по-разному.

    Как только получите такое уведомление на почту, заходите в MikroTik, создавайте supout.rif и отправляйте его прямо в MikroTik. Мы на форуме можем только подтвердить, что это должно работать и конфигурация правильная.
     
     
     
    rextended
    Guest
    #15
    0
    17.09.2021 10:13:00
    @SiB, в следующий раз запуск планировщика должен проверять, завершился ли предыдущий процесс, и если нет — как-то предупреждать пользователя. Псевдокод:

    планировщик устанавливает глобальную переменную randomnameJhdsfg в значение «endscript», если такая переменная ещё не существует;  
    проверяет глобальную переменную randomnameJhdsfg — если она не равна «endscript», то предупреждает пользователя каким-то образом;  
    устанавливает глобальную переменную randomnameJhdsfg в «startscript»;  
    запускает нужный скрипт;  
    устанавливает глобальную переменную randomnameJhdsfg в «endscript».
     
     
     
    SiB
    Guest
    #16
    0
    17.09.2021 10:45:00
    Я знаю, что ты всё делаешь через скрипты :). Но иногда, чтобы не оставлять дверь открытой, я просто в конце расписания/скрипта добавляю одну строчку кода типа:  
    /tool fetch url=https://nosnch.in/00abcdef3f  
    /tool e-mail send to=00abcdef3f@nosnch.in  
    И на этом всё. Если скрипты перестанут работать из-за обновления этого удалённого сервиса по url/email, тогда этот онлайн-сервис пришлёт мне письмо (на бесплатном аккаунте — раз в час, день, неделю или месяц). Конечно, автору этой темы стоит просто добавить предупреждение в лог и следить там, работают ли скрипты или нет... в диагностике можно сделать много чего. Вот почему мы и любим MikroTik — скрипты рулсят!
     
     
     
    Stril
    Guest
    #17
    0
    17.09.2021 11:01:00
    Привет! Я только что добавил предупреждение в лог. Вот основной скрипт:

    :log info message=("Начинаю отправку отчёта");  
    :local ipList value="";  
    :foreach tmpAddress in=[/ip firewall address-list find where list=HONEYPOT] do={
     :set $attackip value=([/ip firewall address-list get $tmpAddress value-name=address]);
     :log info message=("$attackip"." Отчёт на AbuseIPDB");  
     :do {/tool fetch keep-result=no http-method=post url="https://api.abuseipdb.com/api/v2/report" http-data="key=xxxx&categories=14&comment=Portscan&ip=$attackip"} on-error={:log info message="Ошибка при отправке отчёта для IP $attackip"}  
     :delay 6000ms;  
    };  
    :log info message=("Отправка отчёта завершена");

    И ещё один вопрос: Если в планировщике одна задача зависнет и не завершится, остановятся ли тогда все остальные задачи?
     
     
     
    Stril
    Guest
    #18
    0
    17.09.2021 11:05:00
    Вы правы, это было неверно — извините за это! Я подумал, что если все задачи планировщика одновременно перестанут работать, то сам скрипт не может быть причиной. Вы когда-нибудь видели, чтобы планировщик переставал запускать новые задачи из-за того, что один скрипт «заблокирован», и чтобы он перезапускался, сдвигая время запуска?
     
     
     
    rextended
    Guest
    #19
    0
    17.09.2021 11:44:00
    Иногда „fetch“ зависает в ожидании ответа с удалённого сайта и блокирует скрипт (и планировщик), при этом on-error не может поймать бесконечное ожидание… ещё „:set $attackip value=“ — где определяется „attackip“? И „:set“ нужно использовать без знака $.

    Всего 6 секунд между уведомлениями fetch? Некоторые fetch могут накладываться друг на друга... Сколько IP вы отслеживаете? Если список большой, это может занять несколько часов… Вы удаляете IP или постоянно снова отправляете уведомления для уже известного IP?
     
     
     
    rextended
    Guest
    #20
    0
    17.09.2021 11:55:00
    Переписанный скрипт без изменения логики:  
    log info "Начало отправки отчёта"  
    /ip firewall address-list  
    :foreach tmpAddress in=[find where list="HONEYPOT"] do={
       :local attackip [get $tmpAddress address]
       :log info "НАЧАЛО отчёта по $attackip в AbuseIPDB"  
       :do { /tool fetch keep-result=no http-method=post  \  
                         http-data="key=xxxx&categories=14&comment=Portscan&ip=$attackip" \  
                         url="https://api.abuseipdb.com/api/v2/report"  
       } on-error={:log error "Ошибка при отчёте для IP $attackip"}  
    # добавлено для отладки  
       :log info "КОНЕЦ отчёта по $attackip в AbuseIPDB"  
       :delay 10s  
    }  
    :log info "Отправка отчёта завершена"
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры