<?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[Поиск интерфейса по его Description]]></title><description><![CDATA[<p dir="auto">Добрый день.<br />
Как можно проводить поиск по конкретным значениям какого-либо параметра в нодах?<br />
В ветке Делимся скриптами сразу в шапке имелся скрипт поиска "в данном случае по snmp sysDescription коммутатора"</p>
<pre><code>sub GetTree (nodeID)
{
Tree = FindObject(nodeID);
children = GetObjectChildren(Tree);

foreach (n : children)
{
    //println ("Name: " . n-&gt;name);
    if (n-&gt;name != null &amp;&amp; classof(n) == "Node")
    {
        if (n-&gt;sysDescription ~= "^D-Link DES-3028" &amp;&amp; n-&gt;comments == "")
    {
        println ("Name: " . n-&gt;name . ", sysDescription: " . n-&gt;sysDescription . ", IP: " . n-&gt;ipAddr);
    }
}
GetTree(n-&gt;id);
  }
}

GetTree(2);
</code></pre>
<p dir="auto">Который я попытался перенаправить на поиск нод, в которых Description на каком-то из интерфейсов имеет WAN.</p>
<pre><code>sub GetTree (nodeID)
{
Tree = FindObject(nodeID);
children = GetObjectChildren(Tree);

foreach (n : children)
{
    //println ("Name: " . n-&gt;name);
    if (n-&gt;name != null &amp;&amp; classof(n) == "Node")
    {
        if (n-&gt;interfaces.description ~= "WAN" &amp;&amp; n-&gt;comments == "")
    {
        println ("Name: " . n-&gt;name . ", interfaces.description: " . n-&gt;interfaces.description . ", IP: " . n-&gt;ipAddr);
    }
}
GetTree(n-&gt;id);
  }
}

GetTree(2);
</code></pre>
<p dir="auto">Но оба скрипта падают в syntax error на линию 13. Что с того момента изменилось в синтаксе?<br />
=================<br />
Edited<br />
В таком виде</p>
<pre><code>sub GetTree(nodeID)
{
    Tree = FindObject(nodeID);
    children = GetObjectChildren(Tree);

    foreach (n : children)
    {
        if (n-&gt;name != null &amp;&amp; classof(n) == "Node")
        {
            ifaces = n-&gt;interfaces;
            foreach (iface : ifaces)
            {
                if (iface-&gt;description ~= "WAN")
                {
                    println("Name: " , n-&gt;name , ", interface: " , iface-&gt;description , ", IP: " , iface-&gt;ipAddr);
                }
            }

            GetTree(n-&gt;id);
        }
    }
}

GetTree(2);
</code></pre>
<p dir="auto">выполнение его проходит, но результат никакой не получается</p>
<pre><code>*** FINISHED ***

Result:
</code></pre>
]]></description><link>https://forum.netxms.org/topic/8310/поиск-интерфейса-по-его-description</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 22:12:33 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/8310.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Jan 2026 05:22:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Поиск интерфейса по его Description on Thu, 22 Jan 2026 10:52:01 GMT]]></title><description><![CDATA[<pre><code>function GetTree(nodeID)
{
    obj = FindObject(nodeID);
    if (obj == null) return;

    children = obj.children;

    for (n : children)
    {
        if (classof(n) == "Node")
        {
            ifaces = n.interfaces;
            for (iface : ifaces)
            {
                if (iface.description ~= "WAN")
                {
                    println("Node: " .. n.name .. ", Interface: " .. iface.name .. ", Description: " .. iface.description .. ", IP: " .. iface.ipAddr);
                }
            }
        }
        // Рекурсия ВЫНЕСЕНА за пределы условия - обходим все контейнеры
        GetTree(n.id);
    }
}

GetTree(2);
</code></pre>
<p dir="auto">Основные изменения:</p>
<ul>
<li>function вместо sub — современный синтаксис</li>
<li>obj.children вместо GetObjectChildren(obj)</li>
<li>. вместо -&gt; для доступа к свойствам</li>
<li>.. для конкатенации строк (вместо , в println)</li>
<li>Рекурсия вынесена за пределы условия classof(n) == "Node"</li>
</ul>
]]></description><link>https://forum.netxms.org/post/35059</link><guid isPermaLink="true">https://forum.netxms.org/post/35059</guid><dc:creator><![CDATA[alk]]></dc:creator><pubDate>Thu, 22 Jan 2026 10:52:01 GMT</pubDate></item></channel></rss>