Скажите
если я знаю DCI name - например "Serial Number" 
и его значение - 205003573
То как я могу определить к какой ноде он принадлежит? может скрипт какой ?
Заранее спасибо.
			
			
			
				Quote from: inspirit on September 05, 2012, 03:02:36 PM
Скажите
если я знаю DCI name - например "Serial Number" 
и его значение - 205003573
То как я могу определить к какой ноде он принадлежит? может скрипт какой ?
Заранее спасибо.
http://wiki.netxms.org/wiki/NXSL_Function_Reference#Data_Collection
поэкспериментируйте с данными функциями.
			
 
			
			
				Quote from: inspirit on September 05, 2012, 03:02:36 PM
Скажите
если я знаю DCI name - например "Serial Number" 
и его значение - 205003573
То как я могу определить к какой ноде он принадлежит? может скрипт какой ?
Заранее спасибо.
А в какой ситуации это нужно?
			
 
			
			
				ситуация проста. Знаем что в Netxms есть коммутутаторы которые стоят по городу. Через autoaply template к ним автоматически привязываются DCI при добавлении и в том числе опрос Serial Number. Ну и как водится \проектный отдел\ потерял документы по этому оборудованию и знает только его серийник. Вопрос - как узнать что это за оборудование и где оно стоит ? )) Руками искать среди сотен коммутаторов в поисках нужного серийника - как то некруто. Вот и родилась мысль )
			
			
			
				Quote from: inspirit
ситуация проста. Знаем что в Netxms есть коммутутаторы которые стоят по городу. Через autoaply template к ним автоматически привязываются DCI при добавлении и в том числе опрос Serial Number. Ну и как водится \проектный отдел\ потерял документы по этому оборудованию и знает только его серийник. Вопрос - как узнать что это за оборудование и где оно стоит ? )) Руками искать среди сотен коммутаторов в поисках нужного серийника - как то некруто. Вот и родилась мысль )
а, у меня похожая ситуация. Но я пойду другим немножко путем.
1) создаем нодам кастом атрибут > Serial
2) далее скриптом обходим все ноды и записываем в этот кастом атрибут нужное значение. Ну и попутно можно вывести инфу о ноде айпи и т.д. прямо в консоль.
Ну и поиск также можно организовать, перебор нод и сравнением."
плюс пролобирую еще вывод кастом атрибутов на овервиф таб https://www.netxms.org/forum/e-eoe-o-koaot-netxms/overview-tab/
Ну и неплохо бы еще функцию добавить CreateCustomAttribute($node,"attr_name")
			
 
			
			
				Можно написать такой скрипт (в Script Library):
// Find "Entire Network" object and start enumeration from it
println "Searching node with serial number '" . $1 . "'...";
EnumerateNodes(FindObject(1), $1);
println "Node with serial number " . $1 . " not found";
 
// This function walks object tree recursively starting from given root
sub EnumerateNodes(rootObject, serialNumber)
{
    // Walk all child objects
    foreach(o : GetObjectChildren(rootObject))
    {
        if (classof(o) == "Node")
        {
            // Process node object
				value = GetDCIValueByDescription(o, "Serial number");
            if (value == serialNumber)
            {
            	println "Node found: " . o->name;
            	exit;
            }
        }
        else if (classof(o) == "NetObj")
        {
            // For all other objects, go down the tree
            // There can be additional checks for object class, like
            // if (o->type == 5)
            EnumerateNodes(o, serialNumber);
        }
    }
}
и запустить его с консоли сервера (или через nxadm) командой exec:
netxmsd: exec FindBySerial 1200
Searching node with serial number '1200'...
Node found: 10.8.0.9
INFO: Script finished with rc=0
netxmsd: exec FindBySerial 1201
Searching node with serial number '1201'...
Node with serial number 1201 not found
INFO: Script finished with rc=0
(у меня скрипт назван FindBySerial)
println в консоли будет работать только в 1.2.3-rc5 и выше, для предыдущих версий надо использовать trace и смотреть результат в логе.
			
			
			
				Quote from: SKYnv on September 05, 2012, 06:02:01 PM
Ну и неплохо бы еще функцию добавить CreateCustomAttribute($node,"attr_name")
http://wiki.netxms.org/wiki/NXSL:SetCustomAttribute (http://wiki.netxms.org/wiki/NXSL:SetCustomAttribute) :)
			
 
			
			
				Quote from: Victor Kirhenshtein on September 05, 2012, 06:15:15 PM
Quote from: SKYnv on September 05, 2012, 06:02:01 PM
Ну и неплохо бы еще функцию добавить CreateCustomAttribute($node,"attr_name")
http://wiki.netxms.org/wiki/NXSL:SetCustomAttribute (http://wiki.netxms.org/wiki/NXSL:SetCustomAttribute) :)
Да, но там написано
SetCustomAttribute($node, "non_existing_attribute", "new value")	-> NULLа нужно 
SetCustomAttribute($node, "non_existing_attribute", "new value")	-> Attribute not found. Create ne attribute with name "non_existing_attribute"для создания, а не изменения атрибутов ))
			
 
			
			
				Там написано "Previous value of custom attribute or NULL if attribute was not defined before.". Т.е. если атрибут уже был, функция вернет его старое значение, а если его не было, то создаст и вернет NULL. У меня в примерах после стрелочки -> идет результат вызова функции - в данном случае это и будет NULL (предполагая что это чистая система).
			
			
			
				Quote from: Victor Kirhenshtein on September 05, 2012, 06:23:54 PM
Там написано "Previous value of custom attribute or NULL if attribute was not defined before.". Т.е. если атрибут уже был, функция вернет его старое значение, а если его не было, то создаст и вернет NULL. У меня в примерах после стрелочки -> идет результат вызова функции - в данном случае это и будет NULL (предполагая что это чистая система).
хм, тогда извиняйте проглядел. Или когда экспериментировал где-то не сошлось что-то. Спасибо.
Тогда мой способ заполнения информации можно тоже смело применять ) Вот ещебы овервиф подкрутить ;)
			
 
			
			
				У меня при выполнении данного скрипта пишет
ERROR: Script finished with error: Error 14 in line 10: Function or operation argument is not an object.
Что за.. ошибся где ?
			
			
			
				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.
Что за.. ошибся где ?
Это значит что где-то с аргументами ошибся
для отлаки можешь return'ов понаткать в коде или println
			
 
			
			
				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.
Что за.. ошибся где ?
Скорее всего параметр сервера CheckTrustedNodes выставлен в 1. Поставьте в 0 (сервер надо быдет рестартануть после этого), должно заработать. Подробнее про CheckTrustedNodes здесь: http://wiki.netxms.org/wiki/SG:Security_Issues (http://wiki.netxms.org/wiki/SG:Security_Issues).
			
 
			
			
				Все получилось. Спасибо.