Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
     
    CyB3RMX
    Guest
    #1
    0
    25.08.2016 17:02:00
    Привет! Я пишу скрипт на bash на линукс-машине, чтобы вывести список всех CPE на AP. Когда я делаю /ip neigh pr, получаю всю информацию вперемешку, но мне нужно получить только Address и Identity, причём только тех, у кого Identity начинается с CPE-. Я пробовал всё, но никак не получается. Мой временный выход — вывести terse и потом обработать это с помощью awk на линукс-машине, но хочу разобраться, как сделать это прямо на mt-боксе. Любая помощь будет очень кстати. Спасибо!
     
     
     
    katem07
    Guest
    #2
    0
    12.08.2018 22:38:00
    Хорошее обсуждение, хочу вывести только идентификатор устройства. Я много раз пытался получить результат, но без успеха…  
    /ip neighbor print where interface=bridge1 address~"^192.168"  
    Я написал скрипт для обнаружения ненадёжного DHCP-сервера, и он должен показывать идентификацию повреждённых устройств. Вот код:

    # Подсчёт количества устройств, которые получили IP от ненадёжного DHCP-сервера  
    :local loop [:len [/ip neighbor find where interface=bridge1 address~"^192.168"]];

    # Поиск идентификации устройств, которые получили IP от ненадёжного DHCP-сервера <<>> Вот в чём проблема !!  
    :local id [/ip neighbor find where interface=bridge1 address~"^192.168"]

    # Показываем количество таких устройств, если они есть  
    :if ($loop>0) do={:log warning "$loop"

    :delay 2s;

    # Показываем идентификаторы устройств, если они найдены <<>> Вот в чём проблема !!  
    :log warning "$id"
    }

    # Если повреждений от ненадёжного DHCP-сервера нет, выводим в лог: No Loop <<>> Вот ещё одна проблема !! .. этот лог выводится дважды!!!  
    :else do [:log warning "No Loop";]
    Я не понимаю, где ошибка в коде!
     
     
     
    berzins
    Guest
    #3
    0
    13.08.2018 12:22:00
    Привет! Думаю, этот вариант тебе подойдёт — просто замени свой скрипт на этот. Можешь менять переменные $interfaceParam и $addressParam на любые, какие хочешь, и скрипт должен вывести правильные идентификаторы. Если что-то не заработает, не стесняйся спрашивать.  

    # ЗАДАЙ СВОИ ПАРАМЕТРЫ ПОИСКА

    :local interfaceParam "bridge1";  
    :local addressParam "^192.168";  

    # ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ  
    :local loop [:len [/ip neighbor find where interface=$interfaceParam address~$addressParam]];
    :local id [/ip neighbor find where interface=$interfaceParam address~$addressParam]
    :local rogueIdentity;  

    # ВЫВОД КОЛИЧЕСТВА ОБНАРУЖЕННЫХ СТОРОННИХ УСТРОЙСТВ  
    :if ($loop>0) do={:log warning "Обнаружено $loop посторонних устройств"} else={:log warning "Посторонние устройства не найдены"};  

    # ПОЛУЧЕНИЕ ИДЕНТИФИКАТОРОВ СТОРОННИХ УСТРОЙСТВ  
    :foreach var in=$id do={  
       :set $rogueIdentity [/ip neighbor get [/ip neighbor find where .id=$var] identity];
       :log warning "Обнаружено постороннее устройство $rogueIdentity";  
    }
     
     
     
    katem07
    Guest
    #4
    0
    14.08.2018 21:09:00
    Привет! Думаю, это может сработать для тебя, просто замени свой скрипт на этот. Ты можешь менять $interfaceParam и $addressParam на что угодно, и он должен выводить правильную информацию об идентификаторе. Если что-то не будет работать, смело спрашивай.  
    КОД:  
    SELECT ALL  
    DEFINE YOUR SEARCH PARAMETERS:  
    :local interfaceParam “bridge1”;  
    :local addressParam “^192.168”;  
    INITIALIZE VALUES:  
    :local loop [:len [/ip neighbor find where interface=$interfaceParam address~$addressParam]];
    :local id [/ip neighbor find where interface=$interfaceParam address~$addressParam]
    :local rogueIdentity;  
    OUTPUT THE NUMBER OF ROGUE DEVICES DETECTED:  
    :if ($loop>0) do={:log warning “There are $loop rogue devices”} else={:log warning “No rogue devices detected”}; >

    Большое спасибо, всё работает как нужно! 😄

    Ты просто гений! И есть арабская пословица: «Лучше научи меня рыбачить, чем просто дай рыбу» 🙂  

    Где я могу найти базовые правила для изучения скриптинга? 🤔🤔

    С уважением, мой герой!
     
     
     
    berzins
    Guest
    #5
    0
    15.08.2018 04:55:00
    Рад помочь. Советую начать с этого: https://wiki.mikrotik.com/wiki/Manual:Scripting. Всё, что нужно — взять один роутер и попробовать написать что-то простое, что придёт в голову, например: периодически проверять температуру CPU роутера и выводить её в консоль или лог. Рекомендую разобраться со всеми командами {find} и {get} в ROS — они крайне полезны и обязательно будут встречаться в большинстве скриптов. Есть и примеры скриптов для обучения здесь: https://wiki.mikrotik.com/wiki/Manual:Scripting-examples и здесь: https://wiki.mikrotik.com/wiki/Scripts — там можно посмотреть, как решаются разные задачи, и на этом построить свои скрипты. Лучший способ прокачать навыки работы со скриптами для Mikrotik — просто делать это, методом проб и ошибок. У тебя всё получится!
     
     
     
    katem07
    Guest
    #6
    0
    15.08.2018 11:45:00
    Я очень благодарен, обязательно проверю предоставленные ссылки. Иначе я думал, что скрипты в MT основаны на языке Python. В любом случае я создам библиотеку базовых скриптов, готовых к запуску, и выложу их здесь в ответ на то, чему у вас научился. С уважением.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры