Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
     
    tjc
    Guest
    #1
    0
    31.08.2011 05:09:00
    Мне стало интересно, откуда появляются нарушители из моего черного списка, и я попробовал вот что:

    /ip firewall address-list> :foreach a in=[find where list=blacklist dynamic] do={:put [:resolve [/ip firewall address-list get $a address]] }

    Скрипт должен был пройтись по динамическим адресам из моего черного списка и, если удастся разрешить их в имя хоста, вывести его. К сожалению, он упал уже на первом адресе, который не удалось разрешить. Возможно, я что-то упускаю, но не смог понять, как заставить скрипт игнорировать ожидаемую ошибку и продолжать работать, как положено.

    Ведь это вполне обычная задача для скрипта — попытаться определить, какие из адресов валидны, установлены, доступны и так далее. Может, кто-то подскажет?
     
     
     
    el_berto
    Guest
    #2
    0
    07.06.2013 10:43:00
    Не работает (или это я что-то неправильно делаю): catch_script :global return
    :set return false
    :global num

    :put ("   пытаюсь решить #".$num)
    /resolve [/ip firewall address-list get $num comment]
    :set return true

    главный скрипт
    :global num
    :local i
    :local x 2
    :for i from=0 to=$x step 1 do={
      :set num $i
      :put ("проверяю ".$num)
      /sys script run [find name="catch_script"];
      :if ($return) do={
          :put ($num."= решено");
      } else={
          :put ($num."= не решено");
      }
    }

    Результат:
    проверяю 0
      пытаюсь решить #0
    0= решено
    проверяю 1
      пытаюсь решить #1
    1= решено
    проверяю 2
      пытаюсь решить #2
    ошибка: DNS-имя не существует
    [admin@Morm1] /system script>
     
     
     
    psamsig
    Guest
    #3
    0
    07.06.2013 11:41:00
    Если не считать нескольких заметных исключений, ни в коем случае не делайте предположений о номерах записей — чаще всего они идут не по порядку.
     
     
     
    midenok
    Guest
    #4
    0
    08.08.2015 06:37:00
    С выходом версии v6.2 ситуация изменилась! Загляните в Руководство по скриптам, чтобы узнать, как ловить ошибки во время выполнения:

    :do {
         :put [:resolve www.example.com];
    } on-error={ :put "resolver failed"};
    :put "lala"

    вывод:

    resolver failed
    lala
     
     
     
    Xaesar
    Guest
    #5
    0
    31.08.2023 16:33:00
    Верно ли, что выполнение скрипта по SSH прекращается при первой же ошибке? Например, при использовании команды export file=foo.bar? Я полный новичок в скриптах Mikrotik, где лучше всего почитать про поведение команд и прочее? Есть ли встроенные мануалы или документация в интернете, которые я просто не нашёл? Спасибо!
     
     
     
    Amm0
    Guest
    #6
    0
    31.08.2023 16:56:00
    Да, ошибка приведёт к выходу до следующей строки. Если этого не хочется, тогда нужно использовать синтаксис «:do { /badcommand} on-error={};», как показано выше, вокруг кода, который может вызвать ошибку (и где при этом нужно, чтобы остальной код продолжал выполняться). Что касается документации, https://help.mikrotik.com/docs/display/ROS/Scripting описывает синтаксис скриптов, а https://help.mikrotik.com/docs/display/ROS/Scripting+examples — примеры скриптов.

    Однако... в документации порой оставляют тебя в неведении относительно того, как работают конкретные команды — например, что именно может «выкинуть» ошибку, прерывающую выполнение, а что просто вернёт пустую строку или [:nothing]. Например, в первом случае скрипт в SSH остановится, а некоторые «ошибки» проявляются в виде пустой строки или массива. Для каждой команды логично, как она себя ведёт при ошибках, но разные операции или команды иногда обрабатывают ошибки с небольшими нюансами.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры