Собственный скрипт в Script Library в качестве DCI

Started by Alex, January 20, 2015, 03:31:17 PM

Previous topic - Next topic

Alex

Добрый день.

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

Спасибо.


Alex


Alex

Выяснил такую вещь. Скрипт, при использовании функции:
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

Victor Kirhenshtein

Это косяк консоли. Чтение с консоли и работа скрипта параллельны, поэтомы приглашение показывается раньше чем отрабатывает скрипт. Enter можно не нажимать, а так команды писать.

Alex

Quote from: Victor Kirhenshtein on January 22, 2015, 11:13:05 PM
Это косяк консоли. Чтение с консоли и работа скрипта параллельны, поэтомы приглашение показывается раньше чем отрабатывает скрипт. Enter можно не нажимать, а так команды писать.
Установил ваш пример. Ситация такая же. Как только отключаю SNMPWALK, все начинает работать и нет сообщений о Not Supported.