<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Функция возврата октета IP-адреса]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Функция возврата октета IP-адреса форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Mon, 03 Aug 2026 09:08:52 -0400</pubDate>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424923">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			search tag # rextended ip2array ip split octet<br /><br />Эмм… Забыл этот скрипт… Актуальная версия всегда возвращает один массив с элементами: &nbsp;<br />0: IP, переданный в параметр &nbsp;<br />1: 1-й октет &nbsp;<br />2: 2-й октет &nbsp;<br />3: 3-й октет &nbsp;<br />4: 4-й октет &nbsp;<br /><br />:global ip2array do={ &nbsp;<br /> &nbsp; &nbsp;:local ip [:toip $1]  <br /> &nbsp; &nbsp;:local array [:toarray ""]  <br /> &nbsp; &nbsp;:if ([:typeof $ip] != "ip") do={:return $array}  <br /> &nbsp; &nbsp;:set ($array-&gt;0) $ip &nbsp;<br /> &nbsp; &nbsp;:set ip [:tonum $ip]  <br /> &nbsp; &nbsp;:set ($array-&gt;1) (($ip &gt;&gt; 24) & 255) &nbsp;<br /> &nbsp; &nbsp;:set ($array-&gt;2) (($ip &gt;&gt; 16) & 255) &nbsp;<br /> &nbsp; &nbsp;:set ($array-&gt;3) (($ip &gt;&gt; &nbsp;8) & 255) &nbsp;<br /> &nbsp; &nbsp;:set ($array-&gt;4) ( $ip &nbsp; &nbsp; &nbsp; &nbsp;& 255) &nbsp;<br /> &nbsp; &nbsp;:return $array &nbsp;<br />}<br /><br />пример вывода 2-го октета (49) из 85.49.74.128: &nbsp;<br />:put ([$ip2array 85.49.74.128]-&gt;2) <br />
			<i>16.09.2021 23:08:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424923</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424923</guid>
			<pubDate>Thu, 16 Sep 2021 23:08:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424922">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			CalEdu89 пишет: Пожалуйста, создавайте новую тему на форуме и не поднимайте старые. Эта тема посвящена скриптам, а не решению проблем с DNS BlackList. <br />
			<i>16.09.2021 22:04:00, SiB.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424922</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424922</guid>
			<pubDate>Thu, 16 Sep 2021 22:04:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424921">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Как мне на самом деле использовать этот скрипт после создания фильтра межсетевого экрана? Я только что его запустил, но столкнулся с некоторыми трудностями, поэтому так и не дошёл до того момента, когда он должен проверить DNS-чёрный список. <br />
			<i>13.09.2021 13:24:00, CalEdu89.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424921</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424921</guid>
			<pubDate>Mon, 13 Sep 2021 13:24:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424920">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			RouterOS поддерживает побитовые операции, так что можно вычислять IP-адреса вот так, например, получить первый октет: :put (192.168.10.0 & 255.0.0.0)<br />192.0.0.0 Возможно, это пригодится, чтобы ещё больше упростить ваши функции. <br />
			<i>15.06.2020 14:00:00, eworm.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424920</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424920</guid>
			<pubDate>Mon, 15 Jun 2020 14:00:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424919">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Краткая версия: {<br />local CurIP "192.168.10.0/24"<br />put ("IP1oct: ".[pick $CurIP  0 [find $CurIP "."]])<br />put ("IP2oct: ".[pick $CurIP  0 [find $CurIP "." ([find $CurIP "."]+1)]])<br />put ("IP3oct: ".[pick $CurIP  0 [find $CurIP "." ([find $CurIP "." ([find $CurIP "."]+1)]+1)]])<br />put ("IP4oct: ".[pick $CurIP  0 [find $CurIP "/" ]])                                             <br />} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />IP1oct: 192 &nbsp;<br />IP2oct: 192.168 &nbsp;<br />IP3oct: 192.168.10 &nbsp;<br />IP4oct: 192.168.10.0 &nbsp;<br /><br />Пример: ip firewall connection remove [find connection-mark~“wan1_Orange&lt;-&gt;LANs” src-address~$IP3oct]  <br /><br />Редактировать после ответа @eworm: { &nbsp;<br />local CurIP "192.168.10.1/24" &nbsp;<br />local IPoct [pick $CurIP  0 [find $CurIP "/" ]]  <br />put ("IP1oct: ".($IPoct & 255.0.0.0)) &nbsp;<br />put ("IP2oct: ".($IPoct & 255.255.0.0)) &nbsp;<br />put ("IP3oct: ".($IPoct & 255.255.255.0)) &nbsp;<br />put ("IP4oct: ".$IPoct) &nbsp;<br />} &nbsp;<br />IP1oct: 192.0.0.0 &nbsp;<br />IP2oct: 192.168.0.0 &nbsp;<br />IP3oct: 192.168.10.0 &nbsp;<br />IP4oct: 192.168.10.1 &nbsp;<br /><br />Редактировать после ответа @eworm: { &nbsp;<br />local CurIP "192.168.10.1/24" &nbsp;<br />local IPoct [pick $CurIP  0 [find $CurIP "/" ]]  <br />put ("IP1oct: ". [tonum (($IPoct&gt;&gt;24)&0.0.0.255)] )  <br />put ("IP2oct: ". [tonum (($IPoct&gt;&gt;16)&0.0.0.255)] )  <br />put ("IP3oct: ". [tonum (($IPoct&gt;&gt;8)&0.0.0.255)] )  <br />put ("IP4oct: ". [tonum (($IPoct&gt;&gt;0)&0.0.0.255)] )  <br />} &nbsp;<br />IP1oct: 192 &nbsp;<br />IP2oct: 168 &nbsp;<br />IP3oct: 10 &nbsp;<br />IP4oct: 1 <br />
			<i>14.06.2020 00:10:00, SiB.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424919</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424919</guid>
			<pubDate>Sun, 14 Jun 2020 00:10:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424918">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Очевидно, ответ запоздал примерно на год, но чтобы ответить на ваш вопрос: всё, что нужно — это скопировать и вставить указанный выше код ROS в ваш скрипт. Как указано в описании использования, вы можете вызвать его так внутри вашего скрипта: &nbsp;<br />:local ipAddress "10.1.1.20"; &nbsp;<br />:put [$returnOctet $ipAddress 0];  <br />Это вернёт первый октет «10» и выведет его в окно терминала. Также, как отмечено выше, второй аргумент — числа от 0 до 3 — указывают, какой октет вы хотите получить. В приведённом примере, если указать цифры от 0 до 3, результатом будет «10», «1», «1» или «20» соответственно. Это очень удобно, когда нужно работать с определённым октетом переменной, содержащей IP-адрес. &nbsp;<br /><br />Или можно напрямую передать IP в переменную, результат будет тот же, например: &nbsp;<br />:put [$returnOctet 10.1.1.20 0]  <br /><br />После первого запуска скрипта, так как переменная глобальная, вы сможете вызывать её напрямую из терминала тем же способом или использовать в любом другом скрипте, если предварительно объявите «:global returnOctet;». Главное — не забыть это делать до использования, если вы не сбросили переменную командой «:set returnOctet;» или не перезагрузили роутер после запуска скрипта. Глобальные переменные не сохраняются после перезагрузки. &nbsp;<br /><br />Чтобы запустить скрипт, есть несколько способов (возможно, их больше): &nbsp;<br />- открыть терминал и ввести «/system script run nameOfScript» &nbsp;<br />- или в Winbox зайти в System &gt; Scripts &gt; выбрать скрипт и нажать Run Script, но в этом случае вывод работать не будет. <br />
			<i>17.07.2015 20:42:00, royalpublishing.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424918</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424918</guid>
			<pubDate>Fri, 17 Jul 2015 20:42:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424917">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Как пользоваться этим скриптом? <br />
			<i>17.09.2014 03:45:00, rviteri.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424917</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424917</guid>
			<pubDate>Wed, 17 Sep 2014 03:45:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424916">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			актуализировано: <noindex><a href="https://forum.mikrotik.com/viewtopic.php?f=9&amp;t=85205&amp;p=431507#p880374" target="_blank" rel="nofollow" >https://forum.mikrotik.com/viewtopic.php?f=9&amp;t=85205&amp;p=431507#p880374</a></noindex> <br />
			<i>13.06.2014 20:53:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424916</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424916</guid>
			<pubDate>Fri, 13 Jun 2014 20:53:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424915">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Вот моя окончательная рабочая версия функции returnOctet. Я добавил возможность возвращать все октеты в виде массива. Использование: [$returnOctet &lt;номер октета (0-4)&gt;]. Введите IP-адрес и аргумент от 0 до 3, чтобы вернуть конкретный номер октета, или 4 — чтобы вернуть весь массив:<br /><br />:global returnOctet do={<br /> &nbsp;:if ($1="") do={ :error "Вы не указали IP-адрес."; }<br /> &nbsp;:if ($2="") do={ :error "Вы не указали номер октета для возвращения."; }<br /> &nbsp;:if (($2&gt;"4") || ($2&lt;"0")) do={ :error "Номер октета вне допустимого диапазона."; }<br /> &nbsp;:local decimalPos "0";<br /> &nbsp;:local octet1;<br /> &nbsp;:local octet2;<br /> &nbsp;:local octet3;<br /> &nbsp;:local octet4;<br /> &nbsp;:local octetArray;<br /> &nbsp;:set decimalPos [:find $1 "."];<br /> &nbsp;:set octet1 [:pick $1 0 $decimalPos];<br /> &nbsp;:set decimalPos ($decimalPos+1);<br /> &nbsp;:set octet2 [:pick $1 $decimalPos [:find $1 "." $decimalPos]];<br /> &nbsp;:set decimalPos ([:find $1 "." $decimalPos]+1);<br /> &nbsp;:set octet3 [:pick $1 $decimalPos [:find $1 "." $decimalPos]];<br /> &nbsp;:set decimalPos ([:find $1 "." $decimalPos]+1);<br /> &nbsp;:set octet4 [:pick $1 $decimalPos [:len $1]];<br /> &nbsp;:set octetArray [:toarray "$octet1,$octet2,$octet3,$octet4"];<br /> &nbsp;:if (($octet1&lt;"0" || $octet1&gt;"255") || ($octet2&lt;"0" || $octet2&gt;"255") || ($octet3&lt;"0" || $octet3&gt;"255") || ($octet4&lt;"0" || $octet4&gt;"255")) do={ :error "Октет вне допустимого диапазона."; }<br /> &nbsp;:if ($2="0") do={ :return $octet1; }<br /> &nbsp;:if ($2="1") do={ :return $octet2; }<br /> &nbsp;:if ($2="2") do={ :return $octet3; }<br /> &nbsp;:if ($2="3") do={ :return $octet4; }<br /> &nbsp;:if ($2="4") do={ :return $octetArray; }<br />} <br />
			<i>13.06.2014 19:27:00, royalpublishing.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424915</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424915</guid>
			<pubDate>Fri, 13 Jun 2014 19:27:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Функция возврата октета IP-адреса</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424914">Функция возврата октета IP-адреса</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Использование: [$returnOctet &lt;номер октета (0-3)&gt;] Введите IP-адрес и аргумент от 0 до 3, чтобы вернуть конкретный номер октета:<br /><br />global returnOctet do={<br /> &nbsp; &nbsp;:if ($1="") do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:error "Вы не указали IP-адрес."<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:if ($2="") do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:error "Вы не указали октет для возврата."<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:if (($2&gt;3) || ($2&lt;0)) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:error "Аргумент октета вне диапазона."<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:local decimalPos "0"<br /> &nbsp; &nbsp;:local octet1<br /> &nbsp; &nbsp;:local octet2<br /> &nbsp; &nbsp;:local octet3<br /> &nbsp; &nbsp;:local octet4<br /> &nbsp; &nbsp;:set decimalPos [:find $1 "."]<br /> &nbsp; &nbsp;:set octet1 [:pick $1 0 $decimalPos]<br /> &nbsp; &nbsp;:set decimalPos ($decimalPos+1)<br /> &nbsp; &nbsp;:set octet2 [:pick $1 $decimalPos [:find $1 "." $decimalPos]]<br /> &nbsp; &nbsp;:set decimalPos ([:find $1 "." $decimalPos]+1)<br /> &nbsp; &nbsp;:set octet3 [:pick $1 $decimalPos [:find $1 "." $decimalPos]]<br /> &nbsp; &nbsp;:set decimalPos ([:find $1 "." $decimalPos]+1)<br /> &nbsp; &nbsp;:set octet4 [:pick $1 $decimalPos [:len $1]]<br /> &nbsp; &nbsp;:if (($octet1&lt;0 || $octet1&gt;255) || ($octet2&lt;0 || $octet2&gt;255) || ($octet3&lt;0 || $octet3&gt;255) || ($octet4&lt;0 || $octet4&gt;255)) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:error "Октет вне диапазона."<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:if ($2=0) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:return $octet1<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:if ($2=1) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:return $octet2<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:if ($2=2) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:return $octet3<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:if ($2=3) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:return $octet4<br /> &nbsp; &nbsp;}<br />}<br /><br />Я работаю на RouterOS 6.7. Когда я написал этот код, всё работало нормально, но после того, как я сделал из него функцию, не могу понять, почему, если вставить :put сразу после установки octet4, он показывает правильное значение, а с возвратом почему-то возвращается значение $octet3. Аргументы 0-2 дают ожидаемые результаты. <br />
			<i>19.05.2014 22:02:00, royalpublishing.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424914</link>
			<guid>http://mikrotik.moscow/forum/forum57/88245-funktsiya-vozvrata-okteta-ip_adresa/message424914</guid>
			<pubDate>Mon, 19 May 2014 22:02:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
