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

    Получение Bridge Port из DHCP-аренд через терминал

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Получение Bridge Port из DHCP-аренд через терминал, RouterOS
     
    awonglk
    Guest
    #1
    0
    26.01.2022 02:04:00
    Привет, заметил, что в RouterOS 7.x в интерфейсе есть колонка «Bridge Port» . Как вывести эту информацию в терминале? Ни одна из этих команд не показывает её в результатах:  
    /ip/dhcp-server/lease/print  
    /ip/dhcp-server/lease/print detail  
    Это бы очень помогло понять, к какому интерфейсу CAP привязан конкретный DHCP-клиент.
     
     
     
    Jotne
    Guest
    #2
    0
    13.12.2022 20:05:00
    Вот мой вариант, который, возможно, реализую в Splunk, чтобы получить все активные DHCP-аренды с портом моста. Он добавляет bridge-port в массив аренды dhcp.

    /ip dhcp-server lease
    :foreach id in=[find where [:typeof $"active-address"]="ip"] do={
    :local dhcplease "$[get $id]"
    :local mac "$[get $id active-mac-address]"
    :local bridgeport
    :do {
    :set $bridgeport [/interface bridge host get [find mac-address=$mac] interface]
    } on-error={
    }
    :set ( "$dhcplease"->"bridge-port" ) "$bridgeport"
    :put "$dhcplease"
    } @rextended

    Я не вижу, как обойти on-error, потому что не у всех MAC-адресов есть порт моста. Но если у вас есть идеи — буду рад услышать.
     
     
     
    rextended
    Guest
    #3
    0
    13.12.2022 21:31:00
    Я проверяю, но... пока читаю остальное... это??? (Понимаю почему…) [find where active-address~"."] — что это такое... [find where [:typeof $"active-address"]="ip"] для согласованности надо использовать active-mac-address, а не mac-address, тогда на статической аренде это можно будет изменить позже... и ещё, по той же причине, надо проверять реальный «on-interface», а не просто «interface»...
     
     
     
    Jotne
    Guest
    #4
    0
    13.12.2022 21:54:00
    Спасибо, rextended, скрипт обновлён.
     
     
     
    rextended
    Guest
    #5
    0
    13.12.2022 21:54:00
    Эххх… /ip dhcp-server lease  
    :foreach id in=[find where [:typeof $"active-address"]="ip"] do={
       :local activeMAC    [get $id active-mac-address]
       :local if           "не определено"  
       :local outstring    "не определено"  
       /interface bridge host  
       :local searchresult [find where mac-address=$activeMAC]
       :if ([:len $searchresult] > 0) do={
           :set if [get $searchresult on-interface]
           :set outstring "В таблице bridge host MAC $activeMAC приходит с интерфейса $if"  
       } else={  
           :set outstring "В таблице bridge host не найдено результатов с MAC $activeMAC"  
           /ip arp  
           :set searchresult [find where mac-address=$activeMAC]
           :if ([:len $searchresult] > 0) do={
               :set if [get ($searchresult->0) interface]
               :set outstring "$outstring, но в ARP таблице MAC $activeMAC приходит с интерфейса $if"  
           } else={  
               :set outstring "$outstring, и в ARP таблице тоже нет совпадений."  
           }  
       }  
       :put $outstring  
    }
     
     
     
    rextended
    Guest
    #6
    0
    13.12.2022 22:00:00
    Предыдущий скрипт обновлён, потому что в таблице ARP может быть несколько результатов для разных IP с одним и тем же MAC, и я исправил вероятную ошибку. Тестировалось только на v6.
     
     
     
    rextended
    Guest
    #7
    0
    13.12.2022 22:12:00
    Очистил снова, убрал несоответствия и протестировал на v7. Если вы запускали скрипт до того, как прочитали это, используйте новую версию. Мой скрипт также проверяет таблицу ARP, потому что DHCP-сервер не всегда находится на одном мосту…
     
     
     
    mane
    Guest
    #8
    0
    16.02.2022 12:36:00
    То же самое, hap ac3 с 7.1.2, и половина арендаторов в DHCP Server > Leases вообще без bridge порта.
     
     
     
    diamuxin
    Guest
    #9
    0
    02.12.2022 10:53:00
    Привет, этот баг уже пофиксили? Кто-нибудь вообще смог его починить? В версии 7.6 он всё ещё присутствует:

    :put [/ip dhcp-server lease get value-name=bridge-port number=[/ip dhcp-server lease find address=192.168.88.15]]
    Вывод:  
    input не совпадает ни с одним значением value-name

    /ip/dhcp-server/lease/pr detail terse where address=192.168.88.15  
    Вывод:  
    0 D address=192.168.88.15 mac-address=6C:C7:EC:49:6A:70 client-id=1:6c:c7:ec:49:6a:70 address-lists= server=dhcp-bridge dhcp-option= status=bound expires-after=57m29s last-seen=2m31s active-address=192.168.88.15 active-mac-address=6C:C7:EC:49:6A:70 active-client-id=1:6c:c7:ec:49:6a:70 active-server=dhcp-bridge host-name=Galaxy-S8

    В Winbox, если появляется это поле: BR.
     
     
     
    Jotne
    Guest
    #10
    0
    02.12.2022 12:39:00
    Должно быть легко исправить, так что MT, пожалуйста, исправляй.
     
     
     
    diamuxin
    Guest
    #11
    0
    02.12.2022 12:58:00
    Я писал в службу поддержки, но ответа так и не получил. С уважением.
     
     
     
    diamuxin
    Guest
    #12
    0
    13.12.2022 10:07:00
    Нет решения? Жаль, что никто из Mikrotik даже не отвечает. Спасибо.
     
     
     
    Jotne
    Guest
    #13
    0
    13.12.2022 10:41:00
    Обычно всё наоборот. Видишь некоторые команды в CLI, которые не отображаются в WinBox. Это должно быть легко исправить, но так как версия 7.7 сейчас в состоянии RC, думаю, это не поправят в версии 7.7.
     
     
     
    mrz
    Guest
    #14
    0
    13.12.2022 11:41:00
    Winbox, как и во многих других местах, просто берёт информацию откуда-то ещё, в данном случае он просто сравнивает MAC-адрес аренды с записями в таблице хостов мостов и показывает порт.
     
     
     
    diamuxin
    Guest
    #15
    0
    13.12.2022 12:18:00
    Окей, понял, спасибо. С уважением.
     
     
     
    diamuxin
    Guest
    #16
    0
    13.12.2022 17:16:00
    Привет! Делюсь с вами своим скриптом, который решает задачу получения «bridge-port», отображаемого в Leases и берущегося из таблицы Bridge Hosts. Скрипт запущен на моём DHCP-сервере и работает корректно.

    :if ($leaseBound = 1) do={
    :do {
           :local deviceName [/system identity get name];
           
           /ip dhcp-server lease
           :local hostName [get value-name=host-name number=[find address=$leaseActIP]]
           :local Comment [get value-name=comment number=[find address=$leaseActIP]]
           
           /interface/bridge/host
           :local interFace [get [find mac-address=$leaseActMAC] on-interface]
                 
           # НАЧАЛО Модуля отправки в Telegram
           :local MessageText "\E2\84\B9 $deviceName: Информация DHCP %0D%0A Имя: $hostName \
           %0D%0A IP: $leaseActIP %0D%0A MAC: $leaseActMAC %0D%0A Интерфейс: $interFace %0D%0A $Comment"
           :local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]]
           $SendTelegramMessage MessageText=$MessageText
           # КОНЕЦ Модуля отправки в Telegram
         
           :log warning "DHCP предупреждение: $hostName [ $leaseActMAC ] подключён к $interFace"

    } on-error={:log error "Ошибка уведомления Telegram"}

    } BR.
     
     
     
    rextended
    Guest
    #17
    0
    13.12.2022 18:55:00
    Браво!!!
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры