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

    RouterOS SNMP Get

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    RouterOS SNMP Get, RouterOS
     
    cnolte23
    Guest
    #1
    0
    14.07.2018 15:36:00
    Могу ли я использовать команды RouterOS для получения SNMP OID с устройств, подключенных к ethernet-порту Router Board? Например, я хочу получать SNMP-данные с устройства, которое измеряет напряжение, и сохранять эту информацию на Router Board в файл. Затем один раз в день мой сервер будет забирать эти данные с Router Board. Это возможно или лучше серверу получать данные напрямую? В основном пытаюсь ограничить трафик по беспроводной магистрали между сервером и Router Board. Спасибо.
     
     
     
    cnolte23
    Guest
    #2
    0
    05.08.2018 15:47:00
    Спасибо за ответы, я уже пробовал сохранять вывод в переменную, но результат был такой же. Думаю, проблема в том, что данных, которые возвращает snmp-get, слишком много, чтобы поместиться в одну переменную. Ещё символы переноса строки и пробелы могут сбивать всю систему.
     
     
     
    Amm0
    Guest
    #3
    0
    03.09.2021 20:17:00
    Я надеялся, что это исправят в v7.1rcX… Но там в /tool/snmp-get тоже нет ни «get», ни «as-value». Так как v7 Dude ещё нет, по моим данным, в v7 вообще нет способа получить значения SNMP… +1
     
     
     
    Amm0
    Guest
    #4
    0
    14.04.2023 16:33:00
    Если что, параметр «as-value» с /tool/snmp-get доступен в версии v7.8: Сохранение SNMP в переменную.
     
     
     
    rextended
    Guest
    #5
    0
    14.04.2023 16:36:00
    Это для тех, кто не хочет бета-версию ПО в своей сети…
     
     
     
    cnolte23
    Guest
    #6
    0
    05.08.2018 01:11:00
    Все еще ищу помощь… Я начал экспериментировать с командой SNMP-GET, но не могу сохранить информацию в переменную или в файл.

    /tool snmp-get community=XXXXX port=XXXX oid=1.3.6.1.4.1.994.3.4.7.21.1.66.1 version=2c address=XXX.XXX.XXX.XXX

    возвращает следующее:

    [admin@router]
    OID                                      TYPE             VALUE  
    1.3.6.1.4.1.994.3.4.7.21.1.66.1          octet-string     53.8

    Могу ли я сохранить значение в переменную или массив, если у меня есть имя этого значения из другого oid, например из этого ниже?

    OID                                      TYPE             VALUE  
    1.3.6.1.4.1.994.3.4.7.21.1.3.1           octet-string     Battery_String_1

    Всего нужно сохранить около 10 значений и их имён. Буду очень признателен за любую помощь!
     
     
     
    pe1chl
    Guest
    #7
    0
    05.08.2018 10:00:00
    Вам нужно написать скрипт, который использует эту команду и сохраняет результат в переменную, а потом вы сможете записать эту переменную в файл, когда захотите. Для этого используйте конструкцию скрипта:  
    :local variable; :set variable [ /tool snmp-get … ];
     
     
     
    sid5632
    Guest
    #8
    0
    05.08.2018 12:06:00
    Это не работает…  
    [admin@MikroTik] > :global x
    [admin@MikroTik] > env pr
    x=[:nothing]

    [admin@MikroTik] > :set x [/tool snmp-get address=192.168.0.1 oid=1.3.6.1.4.1.14988.1.1.11.1.1.4.3]
    OID                                 TYPE             VALUE                              
    1.3.6.1.4.1.14988.1.1.11.1.1.4.3    octet-string     6.42.6 (stable)                    

    [admin@MikroTik] > env pr
    x=[]
     
     
     
    dasiu
    Guest
    #9
    0
    06.08.2018 08:12:00
    Привет! Тут нет никакой «проблемы» с количеством данных или чем-то подобным... Просто это пока НЕ ПОДДЕРЖИВАЕТСЯ. Кажется, кто-то из команды MT говорил, что планируют добавить эту функцию позже (не помню где). Пока snmp-get используется только для взаимодействия с пользователем, его нельзя автоматизировать через скрипты. Я тоже жду, когда это разработают!
     
     
     
    millenium7
    Guest
    #10
    0
    27.03.2019 06:10:00
    Это нужно реализовать, было бы очень полезно. Мой конкретный случай — мониторинг качества связи радиостанций, чтобы я мог принудительно менять маршрут, когда SNR или уровень сигнала падает ниже определённого порога. Без этого связь может постоянно прерываться с потерей пакетов, высокой задержкой, перегрузками и так далее. OSPF становится очень ненадёжным. Я хочу перенаправлять трафик «до» того, как связь полностью пропадёт, чтобы плохое соединение (дождь, смещение антенны, помехи и т.д.) не влияло на качество работы сети.
     
     
     
    Jotne
    Guest
    #11
    0
    27.03.2019 07:01:00
    Если данные читаются в routerOS с помощью команды, можно обойтись без SNMP. Создайте запланированный скрипт, который читает данные вот так, чтобы получить загрузку процессора:  
    local cpuload ([/system resource get cpu-load])
    Далее сделайте условие if и изменяйте что-то, когда будет превышен порог.
     
     
     
    millenium7
    Guest
    #12
    0
    27.03.2019 07:47:00
    Ну да, понятно, если бы это касалось самого устройства, но суть SNMP в том, чтобы получать данные от «других» устройств, то есть RouterA->RadioA->RadioB->RouterB. Ни один из роутеров не видит состояние канала напрямую, они видят только статус физического Ethernet-порта. Связь RadioA->RadioB может полностью отсутствовать, но с точки зрения любого из роутеров она по-прежнему видна. Или еще хуже — связь RadioA->RadioB есть, и OSPF/BGP пинги проходят, хоть и с трудом. Но производительность канала может быть, скажем, 3 Мбит/с вместо положенных 500 Мбит/с.

    Опять же, никакой видимости, никакой возможности менять метрики канала и так далее. SNMP-GET позволит RouterA мониторить информацию, которую RadioA отчитывает по каналу к RadioB, и заранее менять метрики или делать его недоступным, то есть почти мгновенно и превентивно переключаться на резерв, когда ситуация ухудшается. Вместо того чтобы держать этот ужасный канал живым и гонять по нему трафик, что просто кошмар для VoIP.
     
     
     
    pe1chl
    Guest
    #13
    0
    27.03.2019 13:18:00
    Это известная проблема. По крайней мере, для меня она известна, и иногда меня удивляет, что о ней не говорят чаще. Когда строишь сеть из роутеров MikroTik (например, RBx011) и точечно-точечных связей (например, LHG5), где в сети есть резервные маршруты, настроить корректную маршрутизацию бывает довольно сложно, особенно с коробки. Протоколы маршрутизации, такие как BGP, используют простые алгоритмы выбора пути вроде «меньше переходов — лучше», которые плохо работают в условиях беспроводных связей. Например, есть три роутера A, B и C, у всех есть беспроводные соединения, но между A и C связь слабая. Тогда трафик из A в C должен идти через B, если маршруты A-B и B-C значительно лучше, чем A-C. Однако нет простого способа учесть качество связи в алгоритме маршрутизации. Почему так? Я думал, что такие сети — это основная специализация компаний вроде MikroTik…
     
     
     
    maxfava
    Guest
    #14
    0
    23.01.2020 18:45:00
    Сегодня попробовал обойти проблему с обнаружением устройства, которое не разрешает имя через DNS или SNMP. Поэтому я решил использовать команду snmp-get, но она возвращает контакт mirkotik. Вот так вот, ха-ха.
     
     
     
    rextended
    Guest
    #15
    0
    03.09.2021 22:20:00
    тег поиска # rextended читать snmp установить значение в переменную После 4 лет решения… Просто спросите… Я только что изобрёл этот метод. Один пример: /file remove [find where name="testgetsnmp.txt"]
    {
       :local jobid [:execute file=testgetsnmp.txt \
           script="/tool snmp-get tries=3 try-timeout=3s address=192.168.0.1 port=161 version=2c \
           community=public oid=1.3.6.1.4.1.14988.1.1.3.8.0"]
       :put "Ждем завершения процесса, чтобы файл testgetsnmp.txt стал готов, максимум 20 секунд..."
       :global Gltesec 0
       :while (([:len [/sys script job find where .id=$jobid]] = 1) && ($Gltesec < 20)) do={
           :set Gltesec ($Gltesec + 1)
           :delay 1s
           :put "ждем... $Gltesec"
       }
       :put "Готово. Прошло секунд: $Gltesec\r\n"
       :if ([:len [/file find where name="testgetsnmp.txt"]] = 1) do={
           :local filecontent [/file get [/file find where name="testgetsnmp.txt"] contents]
           :if ([:len $filecontent] = 83) do={:put "Нет результата"; :return ""}
           :local oidstart ([:find $filecontent "\r\n" -1] + 2)
           :local oidend [:find $filecontent " " $oidstart]
           :local typestart ($oidstart + [:find $filecontent "TYPE" -1])
           :local typeend [:find $filecontent " " $typestart]
           :local valuestart ($oidstart + [:find $filecontent "VALUE" -1])
           :local valueend [:find $filecontent " " $valuestart]
           :local getoid [:pick $filecontent $oidstart $oidend]
           :local gettype [:pick $filecontent $typestart $typeend]
           :local getvalue [:pick $filecontent $valuestart $valueend]
           :put "Получено >$getoid< с типом >$gettype< и значением >$getvalue<"
       } else={
           :put "Файл не создан."
       }
    }
     
     
     
    millenium7
    Guest
    #16
    0
    03.09.2021 23:01:00
    Вывод в файл по-прежнему не лучший вариант: это медленно (скорее всего, замедлит работу роутера, пока он ждёт) и быстро изнашивает флеш-память при частой записи. Поэтому такой способ, например, не подходит для мониторинга радиосвязи каждые 5 секунд. Я просто не понимаю этого, мне кажется, что MikroTik специально блокирует эту функцию по какой-то причине. Почему — не знаю, ведь реализовать её так просто, а потенциал огромный: можно значительно улучшить функционал RouterOS и создать целую сеть мини-узлов для мониторинга, оповещений и автоматических действий. Даже можно было бы написать полноценный протокол маршрутизации, предназначенный исключительно для беспроводного подключения через SNMP get/set. Фактически открывается целый набор API, для исправления этой ошибки понадобится, может, всего день работы... А ничего до сих пор не сделано... Безумие.
     
     
     
    rextended
    Guest
    #17
    0
    03.09.2021 23:05:00
    Этот метод не изнашивает FLASH-память, потому что используется RAM, а износ NAND-памяти можно считать незначительным. К тому же в другой теме уже объяснялось, что износ может стать проблемой только спустя десятки лет… Мой пользователь-менеджер для хотспота находится на NAND одного RB1100AHx4, и после множества чтений и записей с 2009 года всё ещё работает без проблем… На некоторых устройствах можно использовать внешние usb/sd/диски…
     
     
     
    Amm0
    Guest
    #18
    0
    03.09.2021 23:28:00
    Справедливо — раз уж твой скрипт старше 4 лет, это кое-что говорит о доводе про «износ флеш-памяти». Тем не менее, в основном я за «get» или «as-value» в /tool/snmp-get — чем постоянно импортировать скрипт, чтобы это сделать. В моём случае я просто использовал REST API с /tool/fetch, чтобы получить данные с устройства. Но вот так:  
    :global myRemoteSnmpValue [/tool/snmp-get oid=1.1 ... as-value]
    было бы намного проще (в идеале результат в формате ключ=значение).
     
     
     
    rextended
    Guest
    #19
    0
    03.09.2021 23:53:00
    У меня нет устройства или виртуальной машины с версией 7.x для теста. Это уже добавили или это просто надежда??? Я (W)ISP с 2007 года, все 1100 или 1200, которые я покупал, были сразу после выхода на рынок (2009/2010?), все работают без проблем с NAND... За все эти годы у меня не было никаких проблем с износом ни на одном устройстве.
     
     
     
    Amm0
    Guest
    #20
    0
    04.09.2021 01:57:00
    Извини, это была всего лишь надежда — но не повезло. Я начал искать только когда понял, что Dude v7 ещё нет, а он бы решил мою проблему с «нужно пару переменных с не-Mikrotik устройства для скрипта Mikrotik». @rextended, я совсем не сомневался в тебе! Наоборот, я хотел сказать, что твой долгосрочный опыт как раз развеивает все домыслы. К тому же, /tool/fetch сильно улучшился с тех пор, как началась эта тема, и сегодня почти у всех устройств есть какой-нибудь HTTP API. Но всё равно SNMP во многих случаях гораздо богаче и лучше продуман, причём в нём есть вещи, которых нет в HTTP API…
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры