<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[discovery or custom script?]]></title><description><![CDATA[<p dir="auto">Добрый день! Возникла необходимость реализовать автоматическое распределение нод по контейнерам, а так же переименовыванием, если у ноды имя == IP (которое образуется в процессе NetworkDiscovery) - пихать эту ноду в "безымянный" контейнер для нод. Если у ноды вписано sysName - переименовываем ноду в этот sysName. На форуме были похожие примеры, часть скрипта я взял с форума.</p>
<pre><code>sub main()
{
  if ($node-&gt;isSNMP)
   {
   transport = CreateSNMPTransport($node);
    if (transport == null)
    {
    return -1;
    }

    location = SNMPGetValue(transport, ".1.3.6.1.2.1.1.6.0"); // sysLocation
    sysname = SNMPGetValue(transport, ".1.3.6.1.2.1.1.5.0");  // sysName
    //nodename = FindObject($node);

	if (sysname != null &amp;&amp; sysname !="" &amp;&amp; sysname !=" ")
    {
         RenameObject($node, sysname);
    }

    if ($node-&gt;name ~= "^10.10.|10.20")
    {

    	BindObject(FindObject(15775), $node);
		println ("true");

    }

    else

    println ("false");



	}

}
</code></pre>
<p dir="auto">15775 - id контейнера куда должны складываться ноды с IP в имени.</p>
<p dir="auto">Но даже простой пример: (Execute server script)</p>
<pre><code>sub main()
{
BindObject(FindObject(15775),FindObject(13471));
}

Error 14 in line 3: Function or operation argument is not an object
</code></pre>
<p dir="auto">Ладно, я пошёл другим путём и сделал Auto bind на нужном контейнере:</p>
<pre><code>return $node-&gt;isSNMP &amp;&amp; ($node-&gt;name ~= "^10.10.|10.20");
</code></pre>
<p dir="auto">Включил active and passive discovery с фильтром SNMP и address subnet.</p>
<p dir="auto">Все ноды сразу же нашлись и забиндились в контейнер 15775, но они так же остаются и в Infrastructure Services, хотя там они естественно не нужны.</p>
<p dir="auto">Так вот, что нужно сделать чтобы в Infrastructure Services они не биндились после Discovery и как мне совместить NetworkDiscovery по subnet + скрипт который будет переименовывать ноды? Или как правильно его назвать чтобы он вызывался при определённых Poll's</p>
]]></description><link>https://forum.netxms.org/topic/4532/discovery-or-custom-script</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 08:49:19 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/4532.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Jun 2016 09:57:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to discovery or custom script? on Thu, 07 Jul 2016 14:21:47 GMT]]></title><description><![CDATA[<p dir="auto">На мой взгляд совершенно правильно - каждый скрипт заимается своим делом.</p>
]]></description><link>https://forum.netxms.org/post/20379</link><guid isPermaLink="true">https://forum.netxms.org/post/20379</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Thu, 07 Jul 2016 14:21:47 GMT</pubDate></item><item><title><![CDATA[Reply to discovery or custom script? on Thu, 07 Jul 2016 14:26:04 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/victor" aria-label="Profile: victor">@<bdi>victor</bdi></a> said in <a href="/post/20361">discovery or custom script?</a>:</p>
<blockquote>
<p dir="auto">Для всех опросов есть hook скрипты: Hook::ConfigurationPoll, Hook::sStatusPoll, и т.д. В данном случае похоже подойдет hook на configuration poll. Еще рекомендую отключить CheckTrustedNodes, иначе могут быть проблемы с поиском объектов.<br />
Не совсем понял как ноды оказались в Infrastructure Services - сам по себе сервер их туда не помещает. В любом случае можно использовать UnbindObject в хуке чтобы убрать ноду оттуда.</p>
</blockquote>
<p dir="auto">Спасибо за ответ, в принципе пока уже прошло время - решил проблему вроде бы. При discovery сервер именует ноды в IP, для таких создан специальный контейнер который туда их автоматически биндит. Дальше если у ноды настроено snmp sysName, то Hook::ConfigurationPoll переименовывает эту ноду в sysName и далее сервер кладёт их в конечный контейнер в котором уже правила такого вида: <code>return $node-&gt;name ~= "^Name 33 ";</code></p>
<p dir="auto">Если у ноды не указан sysName - ничего не делаем с ними.</p>
<p dir="auto">На сколько костыльно или возможно не правильно я это всё сделал ? <img src="https://forum.netxms.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=72b86a538fc" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:1.4em;width:auto;vertical-align:middle" title=":)" alt="🙂" /> Может есть какие то замечания? Конечная цель получить полностью автоматическое распределение нод по контейнерам (улицам).</p>
<p dir="auto"> Получается какой то особенный network discovery скрипт мне не нужен?</p>
]]></description><link>https://forum.netxms.org/post/20377</link><guid isPermaLink="true">https://forum.netxms.org/post/20377</guid><dc:creator><![CDATA[hsvt]]></dc:creator><pubDate>Thu, 07 Jul 2016 14:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to discovery or custom script? on Thu, 07 Jul 2016 09:36:51 GMT]]></title><description><![CDATA[<p dir="auto">Для всех опросов есть hook скрипты: Hook::ConfigurationPoll, Hook::sStatusPoll, и т.д. В данном случае похоже подойдет hook на configuration poll. Еще рекомендую отключить CheckTrustedNodes, иначе могут быть проблемы с поиском объектов.<br />
Не совсем понял как ноды оказались в Infrastructure Services - сам по себе сервер их туда не помещает. В любом случае можно использовать UnbindObject в хуке чтобы убрать ноду оттуда.</p>
]]></description><link>https://forum.netxms.org/post/20361</link><guid isPermaLink="true">https://forum.netxms.org/post/20361</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Thu, 07 Jul 2016 09:36:51 GMT</pubDate></item></channel></rss>