<?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[Дополнительная инфа при создании ноды]]></title><description><![CDATA[<p dir="auto">Доброго дня!<br />
Пытаюсь выцепить информацию о порте, куда подключен интерфейс ноды - вкладка Interfaces, столбцы Peer Node\Interface\IP. Не получается разобраться как их вообще запросить - класс Interface содержит в себе peerNode и peerInterface, но они оба отдают одинаковую инфу о именно комуте Cisco, куда подключено устройство</p>
<pre><code>for (int : $node.interfaces){
	if(int.ifIndex != 1){
		macAd = int.macAddr;
		iNode = int.peerNode;
		println(iNode.ipAddr);
}
}
</code></pre>
<p dir="auto">Если же обращаться далее к интерфейсам уже на комуте, на который попадаю, то интерфейсы могут отдать нормально инфу по имени интерфейса, alias, дескрипшену и т.п. но запрос peerNode или peerInterface отдает идентичный ответ на всех интерфейсах. Из UI клиента видно, что сама по себе инфа о интерфейсах на комуте корректная - разные подключения, мак адреса, ip, имена и т.п.</p>
<pre><code>for (int : $node.interfaces){
	if(int.ifIndex != 1){
		macAd = int.macAddr;
		iNode = int.peerNode;
		for (ii : iNode.interfaces)
			println(ii.peerNode);

}
}
</code></pre>
<p dir="auto">Как мне выделить конкретно информацию о порте и адресе коммутатора, куда подключена нода?<br />
Условно</p>
<hr />
<p dir="auto"><img src="/assets/uploads/files/smf/0000000007008-Interface.png" alt="Interface.png" class="img-markdown  img-fluid" width="1156" height="121" /></p>
<p dir="auto"><img src="/assets/uploads/files/smf/0000000007010-Interface_switch.png" alt="Interface_switch.png" class="img-markdown  img-fluid" width="1147" height="102" /></p>
]]></description><link>https://forum.netxms.org/topic/8322/дополнительная-инфа-при-создании-ноды</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 21:41:55 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/8322.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Feb 2026 07:42:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Дополнительная инфа при создании ноды on Thu, 09 Apr 2026 09:52:26 GMT]]></title><description><![CDATA[<p dir="auto">Цепочка может уходить весьма глубоко, можно например</p>
<p dir="auto">for (i : $node.interfaces) {<br />
  println(<a href="http://i.peerInterface.node.name" rel="nofollow ugc">i.peerInterface.node.name</a>);<br />
}</p>
<p dir="auto">Не обязательно писать цепочкой, можно раскапывать по одному шагу и сохранять в переменные:</p>
<p dir="auto">for (i : $node.interfaces) {<br />
  p = i.peerInterface;<br />
  n = p.node;<br />
  name = <a href="http://n.name" rel="nofollow ugc">n.name</a>;<br />
  println(name);<br />
}</p>
<p dir="auto">но может оказаться, что в этой цепочке какой-то атрибут является null, а не объектом, и тогда все ломается в примере выше, если переменная p будет null, то в следующей строчке, где мы делаем p.node, то есть пытаемся получить атрибут node мы не можем этого сделать, потому что у null нет такого атрибута. Чтоб не ломалось, можно делать проверки в тех местах, которые могут оказаться null, например peerInterface:</p>
<p dir="auto">for (i : $node.interfaces) {<br />
  p = i.peerInterface;<br />
  if (p != null) {<br />
    println(<a href="http://p.node.name" rel="nofollow ugc">p.node.name</a>);<br />
  }<br />
}</p>
<p dir="auto">Или использовать новый синтаксис, появившийся в версии 4.5, называется это safe dereference и если кто-то и окажется null, то попытка обратиться к его атрибуту не завершится ошибкой. Но .? должыть быть в цепочке начиная с первого места, которое может оказаться null и до конца цепочки:</p>
<p dir="auto">for (i : $node.interfaces) {<br />
  println(i.peerInterface?.node?.name);<br />
}</p>
<p dir="auto">Peer ноды определяются во время topology poll</p>
]]></description><link>https://forum.netxms.org/post/35329</link><guid isPermaLink="true">https://forum.netxms.org/post/35329</guid><dc:creator><![CDATA[Filipp Sudanov]]></dc:creator><pubDate>Thu, 09 Apr 2026 09:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Дополнительная инфа при создании ноды on Thu, 09 Apr 2026 04:57:50 GMT]]></title><description><![CDATA[<p dir="auto">Работает, принт отдает нужную инфу.<br />
Как функционируют цепочки параметров?<br />
Вот это имеется ввиду <a href="http://iface.peerNode.name" rel="nofollow ugc">iface.peerNode.name</a> - на сколько глубоко оно может уходить? Пробовал так построить в другом скрипте, постоянно ошибки ловил</p>
<p dir="auto">Вопрос 2<br />
В какой момент происходит запись информации о peer ноде интерфейса? Я так понимаю в момент SYS_NODE_ADDED этой инфы не существует еще т.к. в обнаруженных нодах оно появляется не сразу, а сия конструкция не добавляет в ивент новых пунктов</p>
<pre><code>peerInfo = [];
for(iface : $node.interfaces)
{
	peerIface = iface.peerInterface;
	if (peerIface != null)
	{
		peerIF.append(peerIface.name);
		peerN.append(iface.peerNode.name);
		$event.addParameter("PeerIface", peerIF.join(", "));
		$event.addParameter("PeerNode", peerN.join(", "));
	}

}
</code></pre>
]]></description><link>https://forum.netxms.org/post/35328</link><guid isPermaLink="true">https://forum.netxms.org/post/35328</guid><dc:creator><![CDATA[Argonauts]]></dc:creator><pubDate>Thu, 09 Apr 2026 04:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Дополнительная инфа при создании ноды on Tue, 07 Apr 2026 14:06:04 GMT]]></title><description><![CDATA[<p dir="auto">А что-нибудь такое:</p>
<pre><code>  for (iface : $node.interfaces)
  {
      peerIface = iface.peerInterface;
      if (peerIface != null)
      {
          println("Port " .. peerIface.name .. " on " .. iface.peerNode.name);
      }
  }
</code></pre>
]]></description><link>https://forum.netxms.org/post/35323</link><guid isPermaLink="true">https://forum.netxms.org/post/35323</guid><dc:creator><![CDATA[Filipp Sudanov]]></dc:creator><pubDate>Tue, 07 Apr 2026 14:06:04 GMT</pubDate></item><item><title><![CDATA[Reply to Дополнительная инфа при создании ноды on Tue, 10 Mar 2026 01:26:46 GMT]]></title><description><![CDATA[<p dir="auto">Все еще актуально<br />
Или таковую инфу только с самой базы запрашивать sql запросом?</p>
]]></description><link>https://forum.netxms.org/post/35270</link><guid isPermaLink="true">https://forum.netxms.org/post/35270</guid><dc:creator><![CDATA[Argonauts]]></dc:creator><pubDate>Tue, 10 Mar 2026 01:26:46 GMT</pubDate></item></channel></rss>