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

    узнать IP-адреса на интерфейсе

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    узнать IP-адреса на интерфейсе, RouterOS
     
    Edoras
    Guest
    #1
    0
    20.06.2017 10:36:00
    Я хочу использовать IP-адрес интерфейса в своём скрипте. Получаю IP командой: global addr [/ip address get [find interface="bridge1"] address]. Если на интерфейсе один IP, всё работает. Но когда на интерфейсе два или больше IP-адресов, выскакивает ошибка «invalid internal item number». Есть идеи? Спасибо, Jiri
     
     
     
    Radek01
    Guest
    #2
    0
    13.03.2024 08:20:00
    Есть ли возможность фильтровать их по флагам? Например, в IPv6 у интерфейса несколько адресов с разными флагами, и если мне нужен только глобальный адрес, как это сделать?
     
     
     
    diamuxin
    Guest
    #3
    0
    13.03.2024 12:15:00
    {
    /ip cloud
    :local ipv4 [get public-address]
    :local ipv6 [get public-address-ipv6]
    :put $ipv4
    :put $ipv6
    }
     
     
     
    Radek01
    Guest
    #4
    0
    13.03.2024 14:18:00
    diamuxin: Спасибо за ответ, но я имел в виду получение IP-адреса в целом, а не только публичного. В частности, облако — хороший вариант для кого-то, но я им не пользуюсь.
     
     
     
    trkk
    Guest
    #5
    0
    13.03.2024 14:54:00
    Разве это тебе не помогает? {
       :local addrs [:toarray ""]
       /ip/address
       :foreach id in=[find interface="bridge1"] do={
           # сделать что-нибудь, например
           :set addrs {$addrs , [get $id address]}
       }
       :put $addrs
    }
     
     
     
    Radek01
    Guest
    #6
    0
    13.03.2024 17:55:00
    trkk: Это может быть решением для изначального интервьюера, но мне это не поможет. Я ищу способ отфильтровать и получить IP-адреса согласно их флагам. Я задал свой вопрос в этой ветке, потому что он относится к той же теме, но я не являюсь автором исходного вопроса. Кстати, команда :put должна находиться внутри цикла for, верно?
     
     
     
    trkk
    Guest
    #7
    0
    14.03.2024 05:32:00
    Извини, я перепутал тебя и автора сообщения. К сожалению, нет никакого флага, который бы указывал, является ли IPv4-адрес глобальным или нет, поэтому приходится делать так:  
    > :put [/ip/address/find where !(address in 192.168.0.0/16) and !(address in 172.16.0.0/12) and !(address in 10.0.0.0/8)]

    Наверняка ты знаешь, что можно увидеть доступные параметры для запроса так:  
    > /ip/address/find where <нажми здесь F1>  

    И кстати, команда :put должна быть внутри цикла for, да? Ответ – нет. Этот код сначала сохраняет адреса в массив, а затем выводит данные массива вне цикла. Наверное, мне стоило написать «addresses», а не сокращать до «addrs» (= addr + ‘s’, то есть множественное число, извини).
     
     
     
    trkk
    Guest
    #8
    0
    14.03.2024 05:50:00
    Исправление... Параметры запроса, которые можно использовать с “dynamic” и “invalid”, не отображаются в справочном сообщении “F1”, но при этом работают.
     
     
     
    Radek01
    Guest
    #9
    0
    14.03.2024 09:50:00
    Хорошо, ладно. К сожалению, нет никакого флага, который бы указывал, является ли IPv4-адрес глобальным или нет. А для IPv6 есть какой-то способ это определить?
     
     
     
    trkk
    Guest
    #10
    0
    14.03.2024 12:38:00
    Ага, понял. Я неправильно прочитал твой вопрос, подумал: «/ip/address не имеет параметров (флагов), в отличие от IPv6 (/ipv6/address), поэтому я не могу получить глобальные IPv4-адреса». Так что, если хочешь получить глобальные IPv6-адреса, просто сделай так: «/ipv6/address/find where global».

    {
       :local addresses [:toarray ""]
       /ipv6/address
       :foreach id in=[find interface="bridge1" global] do={
           # сделай что-нибудь, например,
           :set addresses {$addresses , [get $id address]}
       }
       :put $addresses
    }
     
     
     
    Radek01
    Guest
    #11
    0
    14.03.2024 17:40:00
    Хорошо, спасибо за толчок. Теперь я выяснил, что кроме global, invalid и dynamic, можно использовать ещё и link-local. Параметр static использовать нельзя, даже не знаю почему. Есть ли где-то в документации Mikrotik список существующих и применимых параметров?
     
     
     
    rextended
    Guest
    #12
    0
    15.03.2024 16:01:00
    /ipv6 address print where interface=WAN and global :local wanipv6global [/ipv6 address get [find where interface=WAN and global] address] Очевидно, могут возникнуть проблемы, если у интерфейса несколько адресов… Чтобы не забыть ни одного, один IPv6 может иметь один или несколько флагов: disabled dynamic global invalid link-local В v7: preferred valid некоторые отсутствуют, но их легко можно добавить: enabled — это !disabled static — это !dynamic В v6: valid — это !invalid, а в v7 «not preferred» — это !preferred Очевидно, некоторые флаги взаимоисключающие, например, global не может быть link-local и так далее.
     
     
     
    Radek01
    Guest
    #13
    0
    16.03.2024 09:32:00
    rextended: Большое спасибо. Приятно знать.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры