Трансформация данных к виду valueAsMac в таблице DCI

Started by AlexDerevlev, May 17, 2018, 03:54:37 PM

Previous topic - Next topic

AlexDerevlev

Добрый день. Помогите пожалуйста перевести данные в таблице  в читаемый вид типа MAC-адрес. Беру данные из этого OID-a .1.3.6.1.2.1.4.22.1.2 и собственно получается таблица с не читаемыми адресами :( Как показано на прикреплённом принт скрине.

Victor Kirhenshtein

Можно сделать transformation script для таблицы и использовать такую функцию для конвертации MAC адреса:


sub ConvertMAC(str)
{
   mac = "";
   l = length(str);
   for(i = 0; i < l; i++)
   {
      b = right(d2x(ord(substr(str, i + 1, 1))), 2, "0");
      if (i > 0)
         mac .= ":";
      mac .= b;
   }
   return mac;
}


AlexDerevlev

Спасибо Виктор, скрипт заработал но к сожалению некорректно выдаёт MAC адреса.Может быть я что-то неправильно собрал, у меня получился вот такой скрипт трансформации:

colIndex = $1->getColumnIndex("MacAddress");
for(row = 0; row < $1->rowCount; row++)
{
value = $1->get(row, colIndex);
mac = "";
   l = length(value);
   for(i = 0; i < l; i++)
   {
      b = right(d2x(ord(substr(value, i + 1, 1))), 2, "0");
      if (i > 0)
         mac .= ":";
      mac .= b;
   }
$1->set(row, colIndex, mac);
}

например mac адрес 2C-44-FD-39-BD-C0 он преобразует в 2C-44-4D-39-05-10.

Victor Kirhenshtein

А могли бы прислать тот-же OID полученный nxsnmpget'ом?

AlexDerevlev

Виктор спасибо ещё раз за Вашу помощь . Проверив OID-ы через утилиту netxms получил следующий результат:
C:\Users\NetXMS>C:\NetXMS\bin\nxsnmpget.exe -c public -v 2c 10.55.91.1  .1.3.6.1
.2.1.3.1.1.2.18.1.10.55.91.47
.1.3.6.1.2.1.3.1.1.2.18.1.10.55.91.47 [STRING]: ,D?9??  физически он должен был бы быть 2C-44-FD-39-BD-C0

C:\Users\NetXMS>C:\NetXMS\bin\nxsnmpget.exe -c public -v 2c 10.55.91.1  .1.3.6.1
.2.1.3.1.1.2.18.1.10.55.91.48
.1.3.6.1.2.1.3.1.1.2.18.1.10.55.91.48 [Hex-STRING]: 00 26 73 39 A2 86

С 10.55.91.47 понятно , а вот 10.55.91.48 здесь и в OID браузере результат одинаковый в трансформ скрипте он уже отображается как  3F-26-73-39-5E-20.
В тоже время инструмент " &Info->AR&P cache (SNMP) " отображает правильную таблицу IP Mac и Vlan .

Victor Kirhenshtein

Похоже что к моменту попаданию в transformation script некоторые байты уже могут быть испорчены попыткой перевести полученный OCTET STRING в Unicode строку используя текущий code page. В 2.2.7 мы добавили опцию для колонки в SNMP таблице - "convert value to hexadecimal string" - это должно решить проблему.

AlexDerevlev

Спасибо большое Виктор, будем ждать релиз 2.2.7