Quote from: Victor Kirhenshtein on September 10, 2012, 11:44:05 PMспасибо.
Сделал. Если в Script Library есть скрипт с названием Hook::ConfigurationPoll, то он запускается для каждой ноды в коне полла.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts MenuQuote from: Victor Kirhenshtein on September 10, 2012, 11:44:05 PMспасибо.
Сделал. Если в Script Library есть скрипт с названием Hook::ConfigurationPoll, то он запускается для каждой ноды в коне полла.
for (i=20; i!=0; i--)
{
println(i);
if (i==100) break;
}Quoteбаг или я от бессонной ночи что-то упускаю опять?
netxmsd: exec test
20
21
22
...
99
100
INFO: Script finished with rc=0
Quote from: Victor Kirhenshtein on September 10, 2012, 03:16:37 PMну воооот ) а я часок потратил на перебор всех возможных вариантов ) даже вон типы провепил на всяк случай ))
Это оказался забавный баг в парсере - он "i-1" воспринимает как два токена, а не три: идентификатор i и константу "-1". Если после - поставить пробел, то все будет работать как надо. Я добавлю в багтрекер, но исправлю уже только в 1.2.4 - 1.2.3 уже запакована.
sub exchar(str,len)
{
i= length(str)-len;
println(typeof(length(str)). " value->".length(str));
println(typeof(len). " value->".len);
println(typeof(i). " value->".i);
test=i-1;
return substr(str,len,i);
}Quote[10-Sep-2012 18:00:24] Error compiling library script TestSNMP (ID: 10012): syntax error, unexpected T_INT32
Quote from: Victor Kirhenshtein on September 08, 2012, 01:50:06 PM
Это уже можно делать. Для экспорта: Tools -> Export configuration. Для импорта: Tools -> Import Configuration. И есть топик в форуме, где можно делится своими шаблонами: https://www.netxms.org/forum/general-support/sharing-standard-templates-for-netxms/.
Quote from: user318 on September 08, 2012, 03:38:07 PMQuoteну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.Ну и пусть будет. Ведь мы получили некорректное значение и в этом его смысл и есть.
Ну в смысле тут зависит от предпочтений - как мы потом этими значениями будем пользоваться. Но мне кажется, что менять неправильные значения на похожие на правильные всё же может выйти боком.
Quote from: user318 on September 08, 2012, 01:23:30 PM
Да, понятно, что трансформацией можно купировать. Я так пока и делаю. При переполнении или сбросе счётчиков тоже скачки происходят и там такое делал уже. Но как-то надо это исправить, наверное.Quoteв скрипте сравниваете с максимально возможно границей, если больше то заменяете значение на GetMaxDCIValueА что оно делает? Выбирает максимальное значение из существующих? Зачем так сложно? Это и неправильно ведь к тому же.Quoteскрипт простенькийУ меня проще:Quotesub main()
{
if ($1 > 1000000000000)
return NULL;
else
return $1;
}
Quote from: user318 on September 07, 2012, 07:37:43 PMбыла уже не одна тема про пики, потом попробую поискать если напимните как вариант решения предлагаю это
У меня такая же фигня сейчас на нескольких серверах.
Версия агента 1.2.2, ядро 3.4.5-hardened, Gentoo.
sub main()
{
ErrValue = 100000000;
if $1 > ErrValue
return GetMaxDCIValue($node, FindDCIByName($node, "DCI: System.CPU.Usage.IoWait"), 0, time());
trace(1, "Processor max load ". value . "%");
}Quote from: user318 on September 07, 2012, 06:54:09 PMinternal
Было бы хорошо, если бы EternalParameter учитывали код возврата. И если он не 0, то считалось, что параметр не удалось прочитать. А то сейчас вроде если скритп возвращает пустую сточку, например, то в консоли я вижу, что пришёл какой-то мусор. А хотелось бы иметь возможность из скрипта "сообщать" о сбое при опросе параметра.
sub main()
{
transport = CreateSNMPTransport($node);
if (transport == null)
return -1;
oid_loc = ".1.3.6.1.2.1.1.6.0"; // location
oid_uptime = ".1.3.6.1.2.1.1.3.0"; // uptime
oid_name = ".1.3.6.1.2.1.1.5.0"; // sysname
location = SNMPGetValue(transport, oid_loc);
sysname = SNMPGetValue(transport, oid_name);
uptime = SNMPGetValue(transport, oid_uptime);
if (location != null && location !="" && location!=" ")
{
RenameObject($node, location);
// trace(1 ,"Object renamed to ".location);
}
else
{
RenameObject($node, $node->ipAddr);
}
if (sysname != null && sysname !="" && sysname !=" ")
{
SetCustomAttribute($node, "sysname", sysname);
// trace(1 ,"Set custom attribute sysname to ".sysname);
}
if (uptime != null)
{
SetCustomAttribute($node, "uptime", SecondsToUptime(uptime/100));
// trace(1 ,"Set custom attribute uptime ".SecondsToUptime(uptime/100));
}
} Quote from: djaksons on September 06, 2012, 03:22:37 PMВидимо вы тоже словили этот https://www.radensolutions.com/chiliproject/issues/45. Я пока на время исключил данные адреса из autidiscovery фильтром и добавляю вручную.
Никто не подскажет почему после авто добавления объекта он не попал в нужную подсеть?
Удаляю а они снова в корень добавляются, можно ли их как-нибудь переместить в нужную подсеть.
Quote from: inspirit on September 05, 2012, 08:37:59 PM
У меня при выполнении данного скрипта пишет
ERROR: Script finished with error: Error 14 in line 10: Function or operation argument is not an object.
Что за.. ошибся где ?