<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Помощь с php api]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Помощь с php api форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Wed, 12 Aug 2026 08:08:47 -0400</pubDate>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432215">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Да, Boen! Только сегодня (16:47 суббота в Бразилии) мне удалось выделить время, чтобы вернуться к этому проекту. И твоя подсказка сработала именно так, как ты сказал. Чтобы считать количество пингов из контекста routerOS, я просто сохранил значение в «comment» скрипта. В моём случае мне нужен только код результата всей операции (в моём исходном скрипте), но это простое и эффективное решение. Для тех, кому нужны дополнительные значения, подходит то же решение. Несколько значений можно сохранить, используя разделители, и потом легко разбивать их на части и читать отдельные значения. Чтобы лучше объяснить и помочь другим, я написал небольшой код ниже:<br /><br />&lt;?php<br />use PEAR2\Net\RouterOS;<br />require_once 'PEAR2_Net_RouterOS-1.0.0b6.phar';<br /><br /># объявление переменных<br /><br />$device_ip		= '&lt;x.x.x.x&gt;';<br />$device_login		= '&lt;login&gt;';<br />$device_password	= '&lt;password&gt;';<br />$script_name 	= '&lt;script_name&gt;';<br />$where_to_ping	= '&lt;ip_to_ping&gt;';<br />$how_many_packets	= &lt;ping_count&gt;;<br /><br />try {<br /> &nbsp; &nbsp;$util = new RouterOS\Util(<br />		$client = new RouterOS\Client($device_ip, $device_login, $device_password));<br />} catch (Exception $e) {<br /> &nbsp; &nbsp;die('Не удалось подключиться к устройству по адресу '.$device_ip.'.');<br />}<br /><br />// Сначала отправляем скрипт на маршрутизатор через script::prepare<br />// Скрипт просто сохраняется, но не выполняется<br /><br />$util-&gt;setMenu('/system script')-&gt;add(<br />	array(<br />		'name' 			=&gt; $script_name,<br />		'comment'		=&gt; 'Тестовое выполнение скрипта от Boen Mikrotik PHP API',<br />		'policy'		=&gt; 'read,write,test',<br />		'source'		=&gt; RouterOS\Script::prepare(<br />									'<br />:local pingcount [/ping $where count=$packets]<br />/system script set [find name=$mynameis] comment="pingcount=$pingcount"<br /><br />								',<br />								array(<br />									'mynameis' =&gt; $script_name,<br />									'where' =&gt; $where_to_ping,<br />									'packets' =&gt; $how_many_packets<br />								)<br />							)<br />		)<br />);<br /><br />// Теперь ставим этот же скрипт в планировщик, чтобы он запустился через 2 секунды<br /><br />$util-&gt;setMenu('/system scheduler')-&gt;add(<br />	array(<br />		'name' =&gt; 'big_test',<br />		'start-time' =&gt; date_add($util-&gt;getCurrentTime(),date_interval_create_from_date_string("2 seconds"))-&gt;format('H:i:s'),<br />		'on-event' =&gt; $script_name<br />	)<br />);<br /><br />?&gt;<br /><br />Я решил запустить скрипт через 2 секунды после его добавления. Создам тему, чтобы другие могли найти этот пример. Ещё раз спасибо тебе, Boen, за помощь! <br />
			<i>12.01.2019 19:12:00, evandromac.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432215</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432215</guid>
			<pubDate>Sat, 12 Jan 2019 19:12:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432214">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо еще раз, Boen. На самом деле пинг и другие проверки должны выполняться внутри скрипта. Использовать PHP для проверки я не могу по причинам, связанным с разработкой (это часть более большого скрипта). Попробую воспользоваться твоим советом: использовать ::prepare и добавить в планировщик, чтобы запускать через секунду. Вернусь сюда с результатами. <br />
			<i>10.01.2019 14:37:00, evandromac.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432214</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432214</guid>
			<pubDate>Thu, 10 Jan 2019 14:37:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432213">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			А как насчёт запуска реального ping через API? Если результаты важны для дальнейших шагов в скрипте, можно передать нужные части результата в параметры Util::exec() и действовать соответственно. <br /><br />Реальный ping можно выполнить так:<br />$pingResults = $client-&gt;sendSync(<br /> &nbsp; &nbsp;$util-&gt;setMenu('/tool')-&gt;newRequest('ping', ['address' =&gt; $ip, 'src-address' =&gt; $src, 'count' =&gt; $count])<br />)-&gt;getAllOfType(RouterOS\Response::TYPE_DATA);<br /><br />Util::exec() использует Script::prepare() «под капотом» (точнее, Script::append(), но он тоже основан на Script::prepare()), так что по сути это почти то же самое. Единственное отличие в том, что exec() добавляет меню в начало, создаёт скрипт в «/system script» с случайным именем, запускает его и затем удаляет. <br /><br />Эти же шаги можно сделать вручную вокруг Script::prepare() или их часть. Можно попробовать использовать Script::prepare(), затем добавить полученный скрипт в планировщик задач, чтобы он запустился через секунду или около того. Но при этом результаты всё равно нужно записывать в глобальные переменные или в лог, чтобы PHP смог их потом прочитать. <br />
			<i>10.01.2019 13:28:00, boen_robot.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432213</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432213</guid>
			<pubDate>Thu, 10 Jan 2019 13:28:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432212">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Я запускаю это на роутере, открывая скрипт и нажимая «run». Честно говоря, я пытался запустить скрипт, который отправлял с ::prepare из браузера через PHP, но не получилось, а так как времени в обрез, использовал util-&gt;exec. Но если кто-то знает, как запустить скрипт, который я отправлял ранее, используя ::prepare, буду очень признателен за помощь. Пробовал разные комбинации setCommand, request, setArgument (передавая имя скрипта), но ничего: ни ошибки, ни выполнения скрипта таким способом.<br /><br />По твоему второму вопросу: мой скрипт использует /tool ping, как видишь здесь: &nbsp;<br />:global pingPPPoE do={ &nbsp;<br />:return [/tool ping $1 src-address=$2 count=$3];  <br />} &nbsp;<br />Он принимает такие параметры: $1 — адрес для пинга, $2 — адрес источника, $3 — сколько пингов роутер должен отправить. И возвращает, сколько ответов получил.<br /><br />Пока не пробовал сохранять количество ответов в глобальную переменную, так как думал, что проблема в правах доступа.<br /><br />Что касается твоего третьего вопроса: ошибки ни с одной стороны нет. Просто в ответ приходит 0 пакетов.<br /><br />P.S. Пробовал заменить «/tool ping» на просто «/ping» — и всё равно нет пакетов. <br />
			<i>10.01.2019 12:35:00, evandromac.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432212</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432212</guid>
			<pubDate>Thu, 10 Jan 2019 12:35:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432211">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Как ты запускаешь это из роутера? Util::exec() использует «/system script run». Если ты, например, используешь scheduler или импортируешь файл через /import, то это другое. К тому же, Util::exec() добавляет текущий меню путь, а Script::prepare() этого не делает (потому что у него нет понятия меню). Если в твоём скрипте написано просто «ping», вместо «/ping» или «/tool ping», возможно, ты запускаешь его не из того меню. С Script::prepare() ты точно запускаешь с корня. Есть ли ошибки на стороне PHP, или скрипт работает без ошибок, но ты просто не видишь результатов пинга? Если первые — какая именно ошибка? Если вторые… Может, попробуй записывать результаты в глобальную переменную и проверить её потом? <br />
			<i>10.01.2019 09:42:00, boen_robot.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432211</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432211</guid>
			<pubDate>Thu, 10 Jan 2019 09:42:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432210">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Боэн, можешь помочь? Мне удалось сделать пару классных вещей с твоим API. Но сейчас я устал, у меня шея в огне (весь день просидел перед компьютером). Если я отправляю скрипт с script::prepare и потом запускаю его на роутере, он может выполнять сетевой тест (ping) для проверки соединения. А если запускаю тот же самый скрипт через util-&gt;exec, он не пингует ничего вне сети. Политика для обоих случаев одинаковая: read, write, test. Сейчас мне нужно принять лекарства для шеи и ждать твоей помощи. Заранее спасибо! <br />
			<i>10.01.2019 00:26:00, evandromac.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432210</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432210</guid>
			<pubDate>Thu, 10 Jan 2019 00:26:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432209">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			$util-&gt;setMenu('/ppp secret')-&gt;set($name, array('password' =&gt; $password, 'service' =&gt; $service)); будет эквивалентно команде в строке /ppp secret set numbers="user1" password="password1" service="pppoe" <br />
			<i>04.04.2017 08:27:00, boen_robot.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432209</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432209</guid>
			<pubDate>Tue, 04 Apr 2017 08:27:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432208">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет, я тоже пользуюсь вашим клиентом. Хочу изменить пароль PPPoE с помощью PHP-страницы, чтобы пользователь мог менять свой собственный пароль. &nbsp;<br />$name = "user1"; &nbsp;<br />$password = "password1"; &nbsp;<br />$service = pppoe &nbsp;<br />Можете помочь с этим? <br />
			<i>03.04.2017 18:46:00, chenashop.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432208</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432208</guid>
			<pubDate>Mon, 03 Apr 2017 18:46:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432207">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо за быстрый ответ. Отлично, братан. Будь на чеку! <br />
			<i>11.03.2017 20:26:00, rubence1975.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432207</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432207</guid>
			<pubDate>Sat, 11 Mar 2017 20:26:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432206">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Значение max-limit в очереди содержит лимит в формате «upload/download». Если я правильно помню, число задаётся в битах в секунду, так что удвоить существующий лимит будет достаточно просто: разделить строку по «/», умножить обе части и заново собрать строку с новыми значениями через «/». Например:<br /><br />$util-&gt;setMenu('/queue simple'); &nbsp;<br />$queueId = $util-&gt;find(RouterOS\Query::where('target', '192.168.100.2/32')); &nbsp;<br />$maxLimit = $util-&gt;get($queueId, 'max-limit'); &nbsp;<br />list($maxUp, $maxDown) = explode('/', $maxLimit, 2); &nbsp;<br />$maxUp *= 2; &nbsp;<br />$maxDown *= 2; &nbsp;<br />$util-&gt;set( &nbsp;<br /> &nbsp; &nbsp;$queueId, &nbsp;<br /> &nbsp; &nbsp;array( &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;'max-limit' =&gt; "{$maxUp}/{$maxDown}" &nbsp;<br /> &nbsp; &nbsp;) &nbsp;<br />); &nbsp;<br /><br />(то же самое, если нужно уменьшить вдвое — только делите на 2 вместо умножения и округляете результат, чтобы не было дробей). <br />
			<i>11.03.2017 19:42:00, boen_robot.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432206</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432206</guid>
			<pubDate>Sat, 11 Mar 2017 19:42:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432205">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет снова! Последние несколько недель я много игрался с твоим API Client. Спасибо за такой классный инструмент. Но снова сижу в тупике. Хочу увеличить или уменьшить лимит в simple queue в два раза для конкретного IP-адреса. Например, если в simple queue для IP 192.168.100.2 максимальный лимит на загрузку — 10M, а на скачивание — 20M, то через API хочу сделать загрузку 5M, а скачивание 10M… и наоборот. Это возможно? Заранее спасибо! <br />
			<i>11.03.2017 18:19:00, rubence1975.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432205</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432205</guid>
			<pubDate>Sat, 11 Mar 2017 18:19:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Помощь с php api</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432204">Помощь с php api</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Кто-нибудь может помочь написать PHP API? С моей PHP-страницы хочу отключить NAT-правило с определённым комментарием. Или просто, как вызвать следующую команду CLI из PHP-страницы: /ip firewall nat disable [/ip firewall nat find comment=1234] Заранее спасибо! <br />
			<i>25.01.2017 13:17:00, rubence1975.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432204</link>
			<guid>http://mikrotik.moscow/forum/forum57/88968-pomoshch-s-php-api/message432204</guid>
			<pubDate>Wed, 25 Jan 2017 13:17:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
