Подскажите пожалуйста
Есть графический линк между оборудованием и необходимо что бы на линке было значение из таблицы как это сделать?
Таблица из mac адресов со значениями мощность передачи, скорость на канале это для примера. Выбираю в качестве источника значение таблицы но значение не появляется.
Как добавить к значению единицу измерения к примеру выбираю источник скорость передачи данных, на линке появляется значение 100, как добавить мбит/с?
Quote from: andrey_D on November 29, 2020, 10:12:22 AM
Подскажите пожалуйста
Есть графический линк между оборудованием и необходимо что бы на линке было значение из таблицы как это сделать?
Табличные данные на карте не поддерживаются сейчас. Странно что он дает выбрать таблицу в списке. Сейчас единственный вариант - сделать скриптовый DCI, который будет доставать нужную ячейку из таблицы, и его уже добавлять на карту.
Quote from: andrey_D on November 29, 2020, 10:12:22 AM
Как добавить к значению единицу измерения к примеру выбираю источник скорость передачи данных, на линке появляется значение 100, как добавить мбит/с?
В свойствах источника есть строка форматированию, это стандартный Java формат с одним дополнением - можно использовать %*s для автоматической подстановки мультипликаторов. Если надо просто поставить суффикс мбит/с, то строка формата может быть
%s мбит/с
А если значение всегда в битах, и надо автоматически подставлять к, м, и т.д., то строка будет
%*sбит/с
В свойствах источника есть строка форматированию, это стандартный Java формат с одним дополнением - можно использовать %*s для автоматической подстановки мультипликаторов. Если надо просто поставить суффикс мбит/с, то строка формата может быть
%s мбит/с
Спасибо за ответ!
А можно подробнее про скрипт для значений из таблицы
К примеру, мысобираем агентскую таблицу по параметру Agent.SubAgents. Сам этот табличный DCI назван "Loaded subagents". И там какие-то такие данные:
| NAME | VERSION | FILE |
+---------------------+---------------------+---------------------+
| Linux | 4.0.484 | linux.nsm |
| PORTCHECK | 4.0.484 | portcheck.nsm |
| DBQUERY | 4.0.484 | dbquery.nsm |
| FILEMGR | 4.0.484 | filemgr.nsm |
| PING | 4.0.484 | ping.nsm |
| SSH | 4.0.484 | ssh.nsm |
| VMGR | 4.0.484 | vmgr.nsm |
И мы хотим иметь DCI, в котором будет версия субагента PING. Делаем в script library скрипт:
table=GetDCIValueByDescription($node, "Loaded subagents");
if (table!=NULL)
{
col=1;
for (i=0; i < table->rowCount; i++)
{
if (table->get(i, 0) == "PING")
{
return table->get(i, 1);
}
}
}
return null;
Делаем на ноде новый DCI, выбираем тип Script, в поле parameter пишем имя под которым мы сохранили скрипт. Этот скрипт будет доставать из нашего табличного DCI значение из 1-й колонки (колонки считаются от 0) из той строки, где в 0-й колонке написано "PING".
Но сейчас у нас прямо в скрипте прописано, что именно брать, а хотелось бы, чтоб скрипт был универсальным, а мы бы ему сообщали параметрами. что именно нам нужно.
// $1 - Table name
// $2 - Column name from where to return the value
// $3 - Column name where to search
// $4 - Value to search
table=GetDCIValueByDescription($node, $1);
if (table!=NULL)
{
col_return = table->getColumnIndex($2);
col_search = table->getColumnIndex($3);
if (col_search >=0 and col_return >= 0)
{
for (i=0; i < table->rowCount; i++)
{
if (table->get(i, col_search) == $4)
{
return table->get(i, col_return);
}
}
}
}
return null;
Параметр нашего скриптового DCI теперь должне быть таким: GetTableCell(Loaded subagents, VERSION, NAME, PING).