Ad Widget

Collapse

Получение mac адреса по snmp

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • KingMouse
    Junior Member
    • Jan 2017
    • 1

    #1

    Получение mac адреса по snmp

    Zabbix 3.2.3
    Debian 8 (jessie)

    Возникла необходимость получить MAC адреса коммутаторов, для их дальнейшего использования.
    Решил использовать для этого SNMP, чтобы не заморачиваться со скриптами.
    Нашёл вот такой OID: BRIDGE-MIB::dot1dBaseBridgeAddress.0
    Вроде всё отлично, адреса собираются, ошибок нет.
    Проблема обнаружилась там где её меньше всего ожидал: оказалось что zabbix при сохранении удаляет нули в старших разрядах октетов MAC адреса представленных в шестнадцатирчном формате.
    т.е. елси мас адрес устройства 00:19:cb:08:7b:73, то zabbix сохраняет его как 0:19:cb:8:7b:73.
    Я попроболвал получить этот же OID с помощью snmpget - вышла та же картина. Почитав мануал, нашёл ключ:
    -O0 : print leading 0 for single-digit hex characters.
    С этим ключом snmpget выводит мас-адрес корректно. Но куда копать дальше не предполагаю. Поиск по форумам результатов не принёс.
    Проблема конечно не серьёзная, но всё ж...

    Подскажите, восможно ли решить проблему корректного сохранения mac-адресов получаемых zabbix-ом по snmp средствами самого zabbix-а без использования дополнительной обработки значений (скриптом, например)?
  • Prostolutin
    Junior Member
    • Jan 2017
    • 3

    #2
    re:Получение mac адреса по snmp

    у нас такая же проблема. Хотелось бу услышать от кго нибудь решение

    Comment

    • disappointed
      Junior Member
      • Mar 2017
      • 4

      #3
      Присоеденяюсь к вопросу,
      пофиксите чтобы заббикс не проглатывал лидирующие нули в строках.

      Comment

      • Krevedka
        Junior Member
        • Jul 2019
        • 17

        #4
        Джва года прошло, тоже появилась эта же проблема - нули заббикс убирает, заббикс версии 3.4.
        Как исправить?

        Comment

        • Hamardaban
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • May 2019
          • 2713

          #5
          Используйте препроцессинг
          шаг 1 - регулярное выражение ^(.?.(.*)$ и подстановка 0\0
          шаг 2 - регулярное выражение ^0?(.{2}(.*)$ и подстановка \1\2

          ЗЫ - если кто знает более короткий путь - отпишитесь!

          Comment

          • Hamardaban
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • May 2019
            • 2713

            #6
            Code:
            ^(.?.:(.*)$ 0\0
            ^0?(.{2}:(.*)$ \1\2

            Comment

            • Stanley
              Member
              • Oct 2012
              • 75

              #7
              Originally posted by Hamardaban
              Используйте препроцессинг
              шаг 1 - регулярное выражение ^(.?.(.*)$ и подстановка 0\0
              шаг 2 - регулярное выражение ^0?(.{2}(.*)$ и подстановка \1\2

              ЗЫ - если кто знает более короткий путь - отпишитесь!
              Чисто в качестве безумной идеи: А что если вместо утилиты snmp* сделать скрипт, который бы забирал и отдавал верные значения (тоже самое, но с ключами)? Ведь Заббикс же вряд ли самостоятельно лезет по snmp через свои бинарники.

              Comment

              • Krevedka
                Junior Member
                • Jul 2019
                • 17

                #8
                Еще можно так.
                Делаем JavaScript и вот что пишем - в итоге нули восстанавливаются.

                var macFormatArr = [];
                var macOutput = '';
                value.split(':').forEach(function(octet) {

                if(octet.length === 1){

                octet = '0' + octet;

                }


                macFormatArr.push(octet)


                });


                macOutput = macFormatArr.join(':').toUpperCase();

                return macOutput

                Comment

                Working...