Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • 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
     
    manssebas
    Guest
    #1
    0
    14.02.2013 14:30:00
    Привет! У меня проблема с использованием этого скрипта http://wiki.mikrotik.com/wiki/Use_host_names_in_firewall_rules: при запуске из CLI получается: /system script> run resolvehostnames failure: dns name does not exist. И проблема возникает здесь, в конце скрипта выше: : if ($newip != $oldip) do={ :set newip [:resolve $comment] /ip firewall address-list set $i address=$newip} }. Пытался запустить этот скрипт как на ROS 5.14, так и на 5.22. Настройка точно такая же, как в вики, должно быть 100% всё в порядке. Есть какие-нибудь идеи?
     
     
     
    lglego
    Guest
    #2
    0
    10.09.2013 17:08:00
    Привет, skot! Большое спасибо за твой скрипт, он отлично работал, пока я был на v5.25, но пару дней назад обновился до v6.3, и он перестал обновлять адреса. Он все еще работает каждые 3 минуты, но теперь он этого не делает =( Ребят, какие-нибудь идеи, что могло измениться между v5.25 и v6.3? Или есть способ это исправить и заставить его снова работать?
     
     
     
    Netsplite
    Guest
    #3
    0
    21.09.2013 08:41:00
    Спасибо, Скот, за этот отличный скрипт!
     
     
     
    skot
    Guest
    #4
    0
    21.09.2013 17:57:00
    Скрипт у меня работает отлично на v6.3, не знаю, почему у тебя перестал работать. Первым делом проверь логи. Посмотри записи [RESOLVE], возможно, там будет видно, где происходит сбой. Какая последняя запись [RESOLVE] появляется? Для дополнительного тестирования можешь заключить весь основной скрипт в скобки {}, а потом вставить его в терминал. Возможно, это поможет выявить ошибки в скрипте.
     
     
     
    wcsnet
    Guest
    #5
    0
    09.02.2015 09:02:00
    Это моя версия скрипта resolve, он преобразует IP-адрес в имя хоста или имя хоста в IP-адрес: wcsnet, copyright © 2010. все права защищены. версия скрипта: 1.0.

    :do {
    :local content
    :local newhost
    :local oldhost
    :log info “******************** starting - ip resolve ip*******************”
    :log info “-”
    :foreach i in=[/ip firewall address-list find list=“resolve ip” and disabled=no] do={
    :set content [/ip firewall address-list get $i address]
    :set oldhost [/ip firewall address-list get $i comment]
    :do {
    :set newhost [:resolve $content]
    } on-error={
    :log error “dns resolve failure  [ ip - resolve ip ]”
    }
    : if ($newhost != $oldhost) do={
    /ip firewall address-list set $i comment=$newhost
    :log warning “$[/system identity get name] $comment dns host name changed: $oldhost → $newhost”
    }
    }
    :log info “******************** ending - ip resolve ip********************”
    :exec “o - after script run”
    } on-error={
    :log error “script failure  [ ip - resolve ip ]”
    }

    :do {
    :local content
    :local newip
    :local oldip
    :log info “******************** starting - ip resolve host*******************”
    :log info “-”
    :foreach i in=[/ip firewall address-list find list=“resolve host” and disabled=no] do={
    :set content [/ip firewall address-list get $i comment]
    :set oldip [/ip firewall address-list get $i address]
    :do {
    :set newip [:resolve $content]
    } on-error={
    :log error “dns resolve failure  [ ip - resolve host ]”
    }
    : if ($newip != $oldip) do={
    /ip firewall address-list set $i address=$newip
    :log warning “$[/system identity get name] $comment ip address changed: $oldip → $newip”
    }
    }
    :log info “******************** ending - ip resolve host********************”
    :exec “o - after script run”
    } on-error={
    :log error “script failure  [ ip - resolve host ]”
    }
     
     
     
    maxspeed
    Guest
    #6
    0
    20.09.2015 15:32:00
    Привет, если ты использовал первый код, сделай небольшое изменение, и всё будет ок с новой версией прошивки: замени `:execute script=resolvehostnames-sub` на `:execute script="resolvehostnames-sub"`. Оригинальный скрипт будет работать с версией 6.31. Надеюсь, это тебе пригодится, Maxspeed.

    Из этого кода: ros код

    Задержка на X секунд, чтобы разрешить имя хоста:

    :local delay 5
    define variables:
    :global comment
    :global newip
    :local list
    :local oldip
    start logging /log info “[RESOLVE] - START”

    Перебор каждой записи в списке адресов:
    :foreach i in=[/ip firewall address-list find] do={
    очищаем переменную newip каждый раз:
    :set newip “”
    Получаем первые пять символов имени списка:
    :set list [:pick [/ip firewall address-list get $i list] 0 5]
    Если они ‘host_’, то это совпадение — обрабатываем его:
    :if ($list = “host_”) do={
    Получаем комментарий для этого элемента списка адресов (это имя хоста для использования):
    :set comment [/ip firewall address-list get $i comment]
    /log info “[RESOLVE] - checking $comment”
    :set oldip [/ip firewall address-list get $i address]
    /log info “[RESOLVE] - old ip: $oldip”
    /log info “[RESOLVE] - calling sub-script”
    :execute script=resolvehostnames-sub
    Этот скрипт не ждет разрешения под-скриптом имени хоста, поэтому нужно задержаться на время:
    :local counter 1
    while ($counter <= $delay) do={
    /log info “[RESOLVE] - waiting for hostname to resolve - attempt $counter”
    :delay 1s
    if length of new ip is greater than zero, break out of loop:
    :if ([:len $newip] > 0) do={
    :set counter $delay
    }
    increment counter:
    :set counter ($counter + 1)
    }
    if new ip length is greater than zero, an ip was resolved:
    :if ([:len $newip] > 0) do={
    /log info “[RESOLVE] - new ip: $newip”
    if newip does not equal oldip:
    :if ($newip != $oldip) do={
    /log info “[RESOLVE] - ip has changed, updating address list”
    Set the address list entry accordingly
    /ip firewall address-list set $i address=$newip
    }
    else={
    /log info “[RESOLVE] - new ip matches old ip, no change”
    }
    }
    else={
    /log info “[RESOLVE] - did not get new ip, timed out”
    }
    }
    /log info “[RESOLVE] - END”

    Под-скрипт, названный resolvehostnames-sub ros code

    Убедись, что имя этого скрипта совпадает с именем, вызываемым из основного скрипта (resolvehostnames-sub):
    :global comment
    :global newip
    /log info “[RESOLVE] - trying to resolve $comment from sub-script”
    :set newip [:resolve $comment]
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры