NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Alex on January 20, 2015, 03:31:17 PM

Title: Собственный скрипт в Script Library в качестве DCI
Post by: Alex on January 20, 2015, 03:31:17 PM
Добрый день.

Написал 2 скрипта. Запускаю их через nxadm -c "exec ....". Все работает. Но есть цель подключить эти скрипты в Template-ах, и затем назначить на node-ы. В итоге сделал, назначение прошло. Однако после первого самозапуска DCI выдается сообщение "Not Supported". Origin пробовал и Internal и Script, ничего не помогает. Думал проблема в Data Type. Выставил универсальное String. Все тоже самое. Как в итоге подключить-то скрипт, чтоб он срабатывал как DCI на ноде?

Спасибо.
Title: Re: Собственный скрипт в Script Library в качестве DCI
Post by: Alex Kirhenshtein on January 21, 2015, 12:02:12 AM
В скрипте точно нет ошибок? Только что проверил такую конфигурацию:

https://www.dropbox.com/s/ln8ozbzr0wmsoj5/Screenshot%202015-01-20%2023.59.33.png?dl=0
https://www.dropbox.com/s/wbno0ratkx7utqe/Screenshot%202015-01-21%2000.00.16.png?dl=0
https://www.dropbox.com/s/v32zkt9ic7tad4f/Screenshot%202015-01-21%2000.00.59.png?dl=0

А вот если в скрипте сделать ошибку:
https://www.dropbox.com/s/ispi1xg2nsu6lyr/Screenshot%202015-01-21%2000.02.00.png?dl=0
Title: Re: Собственный скрипт в Script Library в качестве DCI
Post by: Alex on January 21, 2015, 09:49:37 AM
Вывод консоли в атаче.
Title: Re: Собственный скрипт в Script Library в качестве DCI
Post by: Alex on January 21, 2015, 10:12:18 AM
Выяснил такую вещь. Скрипт, при использовании функции:
vars = SNMPWalk(transport, oid);
просто подвисает в консоли. Пока не нажмешь enter, он не переходит в строку приглашения.

Скрипт выглядит так:

if ($1 == null)
{
   println "Please specify node name as parameter";
   return 3;
}

out = 0;

transport = CreateSNMPTransport(FindObject($1));
if (transport == null) return -1;
oid = ".1.3.6.1.4.1.21776.1.3.6.2.1.17"; // Names of the running processes
vars = SNMPWalk(transport, oid);
if (vars == null) return -2; // SNMPWalk failed
foreach (v: vars) {
    trace(1, "SNMP WALK ".v->name."=".v->value);
    out = out+v->value;
}
return out;


Взят из примера отсюда: https://wiki.netxms.org/wiki/NXSL:SNMPWalk
Title: Re: Собственный скрипт в Script Library в качестве DCI
Post by: Victor Kirhenshtein on January 22, 2015, 11:13:05 PM
Это косяк консоли. Чтение с консоли и работа скрипта параллельны, поэтомы приглашение показывается раньше чем отрабатывает скрипт. Enter можно не нажимать, а так команды писать.
Title: Re: Собственный скрипт в Script Library в качестве DCI
Post by: Alex on January 23, 2015, 01:09:30 PM
Quote from: Victor Kirhenshtein on January 22, 2015, 11:13:05 PM
Это косяк консоли. Чтение с консоли и работа скрипта параллельны, поэтомы приглашение показывается раньше чем отрабатывает скрипт. Enter можно не нажимать, а так команды писать.
Установил ваш пример. Ситация такая же. Как только отключаю SNMPWALK, все начинает работать и нет сообщений о Not Supported.