<?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[script в Event Processing Policy Editor]]></title><description><![CDATA[<p dir="auto">Делаю обработку эвента SNMP_LINK_DOWN, при этом стоит задача сигнализировать при появлении только с определённого интерфейса. Таким образом пытаюсь использовать следующий скрипт по аналогии с <a href="https://www.netxms.org/forum/index.php/topic,250.0.html:" rel="nofollow ugc">https://www.netxms.org/forum/index.php/topic,250.0.html:</a><br />
sub main()<br />
{<br />
   return (%2 == 4227794) ? 1 : 0;<br />
}<br />
где 4227794 - интересующий interface index.<br />
Однако не работает =(<br />
Версия NetXMS 0.2.20</p>
]]></description><link>https://forum.netxms.org/topic/294/script-в-event-processing-policy-editor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 06:52:41 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/294.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Apr 2008 10:13:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Tue, 27 Oct 2009 20:13:55 GMT]]></title><description><![CDATA[<p dir="auto">Dobrij den'!</p>
<p dir="auto">Znachenie peremennoj counter mozno vstavit' v stroku vot tak:</p>
<p dir="auto">CUSTOM_MESSAGE="Interface Ethernet0/" . counter . " changed state to DOWN";</p>
<p dir="auto">A sam skript mozno sokratit' do</p>
<p dir="auto">sub main()<br />
{<br />
   CUSTOM_MESSAGE = "Interface Ethernet0/" . int32(($2 - 386) / 128) . " changed state to DOWN";<br />
   return 1;<br />
}</p>
<p dir="auto">ili, esli trebuetsja proverka chto $2 - eto 386 + chislo, kratnoe 128, i ne previshaet 3458, to:</p>
<p dir="auto">sub main()<br />
{<br />
   if (($2 &gt;= 3458) || (($2 - 386) % 128 != 0))<br />
      return 0;<br />
   CUSTOM_MESSAGE = "Interface Ethernet0/" . int32(($2 - 386) / 128) . " changed state to DOWN";<br />
   return 1;<br />
}</p>
]]></description><link>https://forum.netxms.org/post/3514</link><guid isPermaLink="true">https://forum.netxms.org/post/3514</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Tue, 27 Oct 2009 20:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Mon, 26 Oct 2009 10:00:26 GMT]]></title><description><![CDATA[<p dir="auto">Добрый день.<br />
Скрипт используется в event processing policy. Спасибо, сейчас все работает, однако возникло желание уменьшить скрипт. Уж очень он большой получается. Пока что идея выглядит вот так:<br />
sub main()<br />
{<br />
   index = 386;<br />
   counter = 0;<br />
   while (index &lt; 3458)<br />
   {<br />
      index = index + 128;    <br />
      counter=counter+1;<br />
      if ($2 == index)<br />
      {<br />
          CUSTOM_MESSAGE="Interface Ethernet0/<em><strong>counter</strong></em> changed state to DOWN";<br />
          return 1;<br />
      }<br />
   }<br />
}<br />
Однако возник вопрос, можно ли значение counter как то поместить в строку?</p>
]]></description><link>https://forum.netxms.org/post/3506</link><guid isPermaLink="true">https://forum.netxms.org/post/3506</guid><dc:creator><![CDATA[rostyslav]]></dc:creator><pubDate>Mon, 26 Oct 2009 10:00:26 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Thu, 22 Oct 2009 14:26:02 GMT]]></title><description><![CDATA[<p dir="auto">A v kakom meste ispol'zuetsja skript? V event processing policy? Esli da, to on dolzen vozvraschat' 0 ili 1 - 0 oznachaet chto sobitie pod pravilo ne podhodit - 1 - chto podhodit. Custom message nado zadavat' cherez peremennuju CUSTOM_MESSAGE, bez znaka dollara, i potom mozete ispol'zovat' eto znachenie v alarmah i action'ah cherez macros %M. Naprimer:</p>
<p dir="auto"> sub main()<br />
{<br />
   if ($1==770)<br />
      CUSTOM_MESSAGE="FastEthernet 0/3";<br />
   return 1;<br />
}</p>
<p dir="auto">I ja podumaju kak sdelat', chtobi ne pisat' if dlja kazdogo interfejsa.</p>
]]></description><link>https://forum.netxms.org/post/3491</link><guid isPermaLink="true">https://forum.netxms.org/post/3491</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Thu, 22 Oct 2009 14:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Thu, 22 Oct 2009 14:02:24 GMT]]></title><description><![CDATA[<p dir="auto">Добрый день!</p>
<p dir="auto">У нас возник следующий вопрос. Имеется оборудование Хуавей, которое в SNMP-трапах не шлёт ifDescr, а только ifIndex интерфейса. Сейчас пытаемся написать скрипт который бы преобразовывал индекс в дескрипшен, для внятного отображения. Придумали пока что-то типа этого:</p>
<p dir="auto"> sub main()<br />
{<br />
if ($1==770)<br />
$CUSTOM_MESSAGE="FastEthernet 0/3";<br />
return $CUSTOM_MESSAGE;<br />
}</p>
<p dir="auto">И сделать так для всех существующих  у нас индексов. Но этот скрипт у нас не работает. Может подскажете как это организовать. И может это возможно как то более оптимально сделать?</p>
]]></description><link>https://forum.netxms.org/post/3489</link><guid isPermaLink="true">https://forum.netxms.org/post/3489</guid><dc:creator><![CDATA[edv]]></dc:creator><pubDate>Thu, 22 Oct 2009 14:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Wed, 28 Jan 2009 10:43:00 GMT]]></title><description><![CDATA[<p dir="auto">всё, понял, спасибо за помощь <img src="https://forum.netxms.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f603.png?v=72b86a538fc" class="not-responsive emoji emoji-android emoji--smiley" style="height:1.4em;width:auto;vertical-align:middle" title="=)" alt="😃" /></p>
]]></description><link>https://forum.netxms.org/post/2883</link><guid isPermaLink="true">https://forum.netxms.org/post/2883</guid><dc:creator><![CDATA[Anth0ny]]></dc:creator><pubDate>Wed, 28 Jan 2009 10:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Wed, 28 Jan 2009 09:27:39 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/anth0ny" aria-label="Profile: anth0ny">@<bdi>anth0ny</bdi></a> said in <a href="/post/2879">script в Event Processing Policy Editor</a>:</p>
<blockquote>
<p dir="auto">а чем плох метод использования системного события? ведь по идее таким образом можно было бы минимизировать количество дополнительных событий? а можно поподробнее, почему предложенный мною метод не сработает? ведь обработка Правил идёт сверху вниз и по идее при обработке SYS_SERVIСE_DOWN, дополненного указанным скриптом, именно это Правило должно обрабатывать ВСЕ события, связанные с SYS_SERVIСE_DOWN + System.ServiceState(lanmanserver). а остальные события должны проваливаться по иерархии Правил дальше, пока не будут соответствующим образом обработаны.</p>
</blockquote>
<p dir="auto">В данном случае все действительно будет работать, поскольку есть дополнительный скрипт для проверки. Просто получится что в разных местах одно и то-же событие обозначает совершенно разные вещи - через год самому можно будет запутаться. А в общем случае получается такая ситуация: сервер генерирует SYS_xxx события в заранее определенных ситуациях, и если их-же использовать в DCI, то потом без использования скриптов невозможно разделить события, созданные сервером по внутренним правилам и по трешолдам. Например, если я определил HTTP сервис на ноде, то если он станет недоступен, сервер создаст событие SYS_SERVICE_DOWN. Если это событие используется и в DCI трешолде, то в event processing policy без скрипта различить их будет нельзя. Ну и текст сообщения для SYS_SERVICE_DOWN определен как</p>
<p dir="auto">Network service "%1" is not responding</p>
<p dir="auto">что при использовании в трешолде даст например</p>
<p dir="auto">Network service "System.ServiceState(lanmanserver)" is not responding</p>
<p dir="auto">В общем, вывод такой: использовать системные события в трешолдах можно, но не рекомендуется, поскольку конфигурация усложняется, легче допустить ошибку, и возможно появление неожиданных эффектов если где-то недосмотреть.</p>
]]></description><link>https://forum.netxms.org/post/2881</link><guid isPermaLink="true">https://forum.netxms.org/post/2881</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Wed, 28 Jan 2009 09:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Wed, 28 Jan 2009 08:45:16 GMT]]></title><description><![CDATA[<p dir="auto">и кстати: только что проверил. моя метода + новый скрипт = работают.</p>
]]></description><link>https://forum.netxms.org/post/2880</link><guid isPermaLink="true">https://forum.netxms.org/post/2880</guid><dc:creator><![CDATA[Anth0ny]]></dc:creator><pubDate>Wed, 28 Jan 2009 08:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Wed, 28 Jan 2009 07:59:59 GMT]]></title><description><![CDATA[<p dir="auto">Виктор, спасибо за помощь <img src="https://forum.netxms.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f603.png?v=72b86a538fc" class="not-responsive emoji emoji-android emoji--smiley" style="height:1.4em;width:auto;vertical-align:middle" title="=)" alt="😃" /></p>
<p dir="auto">т.е. мне нужно использовать при генерации события и его обработке только собственное событие и приведённый скрипт?<br />
<img src="https://forum.netxms.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f603.png?v=72b86a538fc" class="not-responsive emoji emoji-android emoji--smiley" style="height:1.4em;width:auto;vertical-align:middle" title="=)" alt="😃" /></p>
<p dir="auto">а чем плох метод использования системного события? ведь по идее таким образом можно было бы минимизировать количество дополнительных событий? а можно поподробнее, почему предложенный мною метод не сработает? ведь обработка Правил идёт сверху вниз и по идее при обработке SYS_SERVIСE_DOWN, дополненного указанным скриптом, именно это Правило должно обрабатывать ВСЕ события, связанные с SYS_SERVIСE_DOWN + System.ServiceState(lanmanserver). а остальные события должны проваливаться по иерархии Правил дальше, пока не будут соответствующим образом обработаны.</p>
<p dir="auto">у меня предварительно настроено так:</p>
<p dir="auto">мониторим System.ServiceState(lanmanserver), если получаем 1, то используем событие SYS_SERVIСE_DOWN, если возвращаемся к 0, то SYS_SERVIСE_UP. я просто при разработке этого DCI предположил что именно так и нужно использовать данные события...</p>
<p dir="auto">мне просто не очень понятно...</p>
<p dir="auto"><img src="https://forum.netxms.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f603.png?v=72b86a538fc" class="not-responsive emoji emoji-android emoji--smiley" style="height:1.4em;width:auto;vertical-align:middle" title="=)" alt="😃" /></p>
]]></description><link>https://forum.netxms.org/post/2879</link><guid isPermaLink="true">https://forum.netxms.org/post/2879</guid><dc:creator><![CDATA[Anth0ny]]></dc:creator><pubDate>Wed, 28 Jan 2009 07:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Tue, 27 Jan 2009 10:13:02 GMT]]></title><description><![CDATA[<p dir="auto">Все почти правильно. Первый комментарий - по событию: SYS_SERVICE_DOWN - это системное событие, если мониторится что-то через DCI и thresholds - то должно быть какое-то свое событие (это уже обсуждалось где-то на форуме). И если это событие от срабатывания трешолда, то имя параметра DCI будет в первом параметре события, т.е. надо использовать $1 вместо $2. Ну и поскольку это строка, то она должна быть в кавычках. Таким образом, правильный скрипт:</p>
<pre><code>sub main()
{
   return $1 == "System.ServiceState(lanmanserver)";
}
</code></pre>
<p dir="auto">или просто</p>
<pre><code>$1 == "System.ServiceState(lanmanserver)"
</code></pre>
<p dir="auto">Я убрал "? 1 : 0", поскольку результатом операции сравнения и так будет 1 или 0.</p>
<p dir="auto">И да, для прекращения обработки события надо использовать "Options: Stop processing if rule match".</p>
]]></description><link>https://forum.netxms.org/post/2878</link><guid isPermaLink="true">https://forum.netxms.org/post/2878</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Tue, 27 Jan 2009 10:13:02 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Tue, 27 Jan 2009 09:26:48 GMT]]></title><description><![CDATA[<p dir="auto"><img src="https://forum.netxms.org/assets/plugins/nodebb-plugin-emoji/emoji/android/1f603.png?v=72b86a538fc" class="not-responsive emoji emoji-android emoji--smiley" style="height:1.4em;width:auto;vertical-align:middle" title="=)" alt="😃" /> только начинаю разбираться в скриптовании, а потому вопросы в основном будут глупыми...</p>
<p dir="auto">Задача: нужно сделать Правило-ловушку, в которую должны попадаться только события, в которых фигурирует <strong>Parameter</strong> <em><strong>System.ServiceState(lanmanserver)</strong></em>. Остальные События с ошибками от других сервисов должны игнорироваться и проходить на процессинг дальше...</p>
<p dir="auto">Если я создам такое Правило в EPPE (Event Processing Policy Editor), это должно сработать?:</p>
<p dir="auto"><strong>Source:</strong> Any<br />
<strong>Event:</strong> SYS_SERVICE_DOWN (Major)<br />
<strong>Severity:</strong> Major<br />
<strong>Script:</strong></p>
<pre><code>sub main()
{
   return ($2 == System.ServiceState(lanmanserver)) ? 1 : 0;
}
</code></pre>
<p dir="auto"><strong>Alarm:</strong> указан только параметр "%m"<br />
<strong>Situation:</strong> нет<br />
<strong>Action:</strong> 2 реакции</p>
<ol>
<li>отправить почтой оповещение</li>
<li>перезапустить сервис "lanmanserver"<br />
<strong>Options:</strong> нет</li>
</ol>
<p dir="auto">Правда возникает вопрос: а как сделать так что бы не происходило двойного срабатывания правил, если есть 2 правила, 1 - Специальное (то, что я привёл выше) и 2 - общее, общего назначения для всех отслеживаемых служб?</p>
<p dir="auto">Нужно использовать "Options: Stop processing if rule match"?</p>
]]></description><link>https://forum.netxms.org/post/2876</link><guid isPermaLink="true">https://forum.netxms.org/post/2876</guid><dc:creator><![CDATA[Anth0ny]]></dc:creator><pubDate>Tue, 27 Jan 2009 09:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Sat, 19 Apr 2008 15:49:27 GMT]]></title><description><![CDATA[<p dir="auto">Начиная с версии 0.2.21 это можно делать - в скрипте выставляем переменную CUSTOM_MESSAGE в нужное значение, и потом можем получить его используя макрос %M при создании аларма или actions.</p>
]]></description><link>https://forum.netxms.org/post/1513</link><guid isPermaLink="true">https://forum.netxms.org/post/1513</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Sat, 19 Apr 2008 15:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Fri, 18 Apr 2008 08:45:15 GMT]]></title><description><![CDATA[<p dir="auto">думаю это будет полезно: во-первых - чтобы не плодить на каждое событие по action а передавать одному и тому же разные сообщения; во вторых - например пришёл трап с индексом интерфейса, в скрипте этот индекс преобразуем во что-нить более понятное и формируем уже нормальное сообщение об ошибке.</p>
]]></description><link>https://forum.netxms.org/post/1496</link><guid isPermaLink="true">https://forum.netxms.org/post/1496</guid><dc:creator><![CDATA[MaG]]></dc:creator><pubDate>Fri, 18 Apr 2008 08:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Fri, 18 Apr 2008 08:06:37 GMT]]></title><description><![CDATA[<p dir="auto">Поменять нельзя. Но могу это сделать в следующем релизе, технически это не сложно.</p>
]]></description><link>https://forum.netxms.org/post/1494</link><guid isPermaLink="true">https://forum.netxms.org/post/1494</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Fri, 18 Apr 2008 08:06:37 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Fri, 18 Apr 2008 07:44:14 GMT]]></title><description><![CDATA[<p dir="auto">пардон, туплю.<br />
и ещё вопросик по теме - нельзя ли в этом скрипте поменять %m?<br />
вроде EVENT_TEXT есть, можно ли его вернуть?</p>
]]></description><link>https://forum.netxms.org/post/1493</link><guid isPermaLink="true">https://forum.netxms.org/post/1493</guid><dc:creator><![CDATA[MaG]]></dc:creator><pubDate>Fri, 18 Apr 2008 07:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to script в Event Processing Policy Editor on Fri, 18 Apr 2008 06:53:41 GMT]]></title><description><![CDATA[<p dir="auto">Должно быть</p>
<pre><code>sub main()
{
   return ($2 == 4227794) ? 1 : 0;
}
</code></pre>
]]></description><link>https://forum.netxms.org/post/1492</link><guid isPermaLink="true">https://forum.netxms.org/post/1492</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Fri, 18 Apr 2008 06:53:41 GMT</pubDate></item></channel></rss>