<?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">Приветствую!</p>
<p dir="auto">Возникли следующие 2 вопроса:</p>
<ol>
<li>
<p dir="auto">Если я на сервере отслеживаю состояние сервиса (например spooler) через System.ServiceState(spooler), то %1 всегда возвращает именно System.ServiceState(spooler). Можно ли каким-то образом получать только значение, заключённое в ()? т.е. в данном случае только само значение <strong>spooler</strong>.</p>
</li>
<li>
<p dir="auto">вытекает из первого вопроса. если я хочу автоматически перезагружать сервис <strong>spooler</strong>, я</p>
</li>
</ol>
<p dir="auto">а) создаю Action на сервере: Reset My Service \ Execute action on remote agent\ %a \ ResetService<br />
б) создаю запись в конфиге Агента: ActionShellExec = ResetService:sc stop <strong>spooler</strong> &amp;&amp; sc start <strong>spooler</strong><br />
в) создаю привязку Action "Reset My Service" к Event "SYS_SERVICE_DOWN" через Event Processing Policy<br />
г) создаю DCI и добавляю в свойства DCI параметр Threshold: Last polled value - Not equal - 0 - SYS_SERVICE_DOWN</p>
<p dir="auto">а вот теперь собственно вопрос: если я хочу сделать Reset My Service универсальным Action для ЛЮБОГО сервиса, как мне модифицировать строку <em>ActionShellExec = ResetService:sc stop <strong>spooler</strong> &amp;&amp; sc start <strong>spooler</strong></em></p>
<p dir="auto">может быть так? ActionShellExec = ResetService:sc stop <strong>%1</strong> &amp;&amp; sc start <strong>%1</strong></p>
<p dir="auto">и вот тут всплывает первый вопрос: %1 - возвращает не только название сервиса "spooler", но так же содержит и метод проверки "System.ServiceState".</p>
<p dir="auto">Прошу помочь.<br />
 <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>
]]></description><link>https://forum.netxms.org/topic/492/вопрос-по-макросам-и-передаче-их-значений-в-скрипты-как-параметров</link><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 22:26:27 GMT</lastBuildDate><atom:link href="https://forum.netxms.org/topic/492.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Oct 2008 14:09:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Вопрос по макросам и передаче их значений в скрипты (как параметров) on Thu, 16 Oct 2008 14:40:08 GMT]]></title><description><![CDATA[<p dir="auto">Могу предложить два варианта:</p>
<ol>
<li>Сделать скрипт под названием, скажем, "extract_arg":</li>
</ol>
<pre><code>sub main()
{
   if ($event-&gt;parameters[1] ~= ".*\((.*)\)")
      return $1;
   return "";
}
</code></pre>
<p dir="auto">И вместо %1 использовать %[extract_arg]</p>
<ol start="2">
<li>Прописывать  название сервиса в поле Instance и использовать %6 вместо %1.</li>
</ol>
<p dir="auto">И в том, и в другом варианте конфиг агента можно сделать как</p>
<pre><code>ActionShellExec = ResetService:sc stop $1 &amp;&amp; sc start $1
</code></pre>
<p dir="auto">а в конфигурации action'a на сервере использовать соответственно</p>
<p dir="auto">ResetService %[extract_arg]</p>
<p dir="auto">или</p>
<p dir="auto">ResetService %6</p>
]]></description><link>https://forum.netxms.org/post/2474</link><guid isPermaLink="true">https://forum.netxms.org/post/2474</guid><dc:creator><![CDATA[victor]]></dc:creator><pubDate>Thu, 16 Oct 2008 14:40:08 GMT</pubDate></item></channel></rss>