<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Добавить значения VLAN моста]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Добавить значения VLAN моста форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Thu, 30 Jul 2026 23:38:02 -0400</pubDate>
		<item>
			<title>Добавить значения VLAN моста</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391700">Добавить значения VLAN моста</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Это сработает только в том случае, если VLAN уже существует в /interface/bridge/vlan. Сейчас у вас будет запись bridge vlan, если у вас уже был /interface/vlan в 7.16+, так как он создаётся динамически. В противном случае нужно использовать «add», а не «set». <br />
			<i>29.04.2025 20:33:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391700</link>
			<guid>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391700</guid>
			<pubDate>Tue, 29 Apr 2025 20:33:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Добавить значения VLAN моста</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391699">Добавить значения VLAN моста</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Не уверен, что это то, о чем ты говоришь, но я искал способ добавить порты моста в существующую VLAN через CLI.<br /><br />:local vlanId 30 &nbsp;<br />:local bridgeName "bridge" &nbsp;<br />:local newPort "sfp-sfpplus3" &nbsp;<br /><br />:local vlanEntry [/interface bridge vlan find where bridge=$bridgeName and vlan-ids=$vlanId]  <br /><br />:local currentTagged [/interface bridge vlan get $vlanEntry tagged]  <br />:put [:len $currentTagged]  <br /><br />:if ([:len $currentTagged] &gt; 0) do={  <br /> &nbsp; &nbsp;:local updatedTagged ($currentTagged, $newPort) &nbsp;<br /> &nbsp; &nbsp;/interface bridge vlan set $vlanEntry tagged=$updatedTagged &nbsp;<br />} else={ &nbsp;<br /> &nbsp; &nbsp;/interface bridge vlan set $vlanEntry tagged=$newPort &nbsp;<br />} &nbsp;<br /><br />:put ("Порт " . $newPort . " добавлен в VLAN " . $vlanId . " как tagged.") <br />
			<i>27.04.2025 21:07:00, 1024jon.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391699</link>
			<guid>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391699</guid>
			<pubDate>Sun, 27 Apr 2025 21:07:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Добавить значения VLAN моста</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391698">Добавить значения VLAN моста</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Используй функцию (глобальную или передаваемую как аргумент другой функции) для повторного использования в команде find, вместо того чтобы копировать и вставлять один и тот же код в рабочие функции, но я согласен, что какой-нибудь дополнительный оператор (например, or, который бы работал и с массивами) для поиска значения в массиве был бы намного чище. 1337-код здесь нужен, чтобы обмануть интерпретатор и получить значение переменной из контекста, когда она не определена в коде и в имени есть дефис — $“”. Для удаления VLAN пока не вижу простого способа, кроме как отфильтровать массив VLAN ID по тегам и убрать из него нужный VLAN ID. <br />
			<i>31.01.2025 19:46:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391698</link>
			<guid>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391698</guid>
			<pubDate>Fri, 31 Jan 2025 19:46:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Добавить значения VLAN моста</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391697">Добавить значения VLAN моста</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			LOL, я думал, что какой-то трюк с [find (code)] сработает — проблема была именно в вложенном :find внутри find, о котором я не подумал. Отличная работа! Теперь, стоит ли "языку конфигурации" для роутера превращать добавление access/trunk-портов в задачу уровня LeetCode — это уже совсем другой вопрос. По моему мнению, нужен оператор find для проверки вхождения в массив, типа “[find vlan-id has &lt;VLAN_ID&gt;]”. Сейчас есть оператор “in”, но он работает только для ip-prefix. Например, даже с ярлыком @optio всё не очень аккуратно, а удаление ещё сложнее. Думаю, вот такой подход с тегированием порта на VLAN — без тонны :foreach — правильный, но надо бы подробнее протестировать, чтобы быть уверенным:<br /><br />:global mktrunk do={<br /> &nbsp; &nbsp;:local bvid [/interface/bridge/vlan find dynamic=no vlan-ids=[:if ([:len [:find $"vlan-ids" $1]]) do={:return $"vlan-ids"}]]<br /> &nbsp; &nbsp;:if ([:len $bvid]=0) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:set bvid [/interface/bridge/vlan add vlan-ids=$1 comment="added by $0" bridge=[/interface/bridge/find vlan-filtering=yes disabled=no]] <br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;/interface/bridge/vlan set $bvid tagged=([get $bvid tagged],$2)<br />}<br /><br />:global rmtrunk do={<br /> &nbsp; &nbsp;:local bvid [/interface/bridge/vlan find dynamic=no vlan-ids=[:if ([:len [:find $"vlan-ids" $1]]) do={:return $"vlan-ids"}]]<br /> &nbsp; &nbsp;:local orig [/interface/bridge/vlan get $bvid tagged] <br /> &nbsp; &nbsp;:local final [:toarray ""]<br /> &nbsp; &nbsp;:foreach i in=$orig do={ :if ($i != "$2") do={:set final ($final, $i)} }<br /> &nbsp; &nbsp;/interface/bridge/vlan set $bvid tagged=$final<br /> &nbsp; &nbsp;# опционально, если больше нет тегированных или нетегированных портов — удалить сам bridge vlan<br /> &nbsp; &nbsp;:if (([:len [/interface/bridge/vlan get $bvid tagged]]=0) and ([:len [/interface/bridge/vlan get $bvid untagged]]=0)) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;/interface/bridge/vlan remove $bvid<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;# в то время как mktrunk может принимать массив интерфейсов, rmtrunk должен получать только один интерфейс в $2<br />}<br /><br /># создать<br />$mktrunk 123 ether4<br /># обновить<br />$mktrunk 123 ether5<br /># удалить<br />$rmtrunk 123 ether5<br /># примечание: массив поддерживается только для mktrunk, так как там это автоматом<br />$mktrunk 123 ("ether5","ether6")<br /># а rmtrunk МАССИВ не принимает и вообще ничего не найдёт/не удалит<br /><br />В любом случае, вышеприведённый код намного чище, чем то, с чего я начинал… Так что спасибо! <br />
			<i>31.01.2025 19:32:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391697</link>
			<guid>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391697</guid>
			<pubDate>Fri, 31 Jan 2025 19:32:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Добавить значения VLAN моста</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391696">Добавить значения VLAN моста</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Возможно, это поможет: [find dynamic=no vlan-ids=[:if ([:len [:find $"vlan-ids" &lt;VLAN_ID&gt;]]) do={:return $"vlan-ids"}]] или с функцией для повторного использования: :local inArray do={:if ([:len [:find $1 $2]]) do={:return $1}}  <br />... [find dynamic=no vlan-ids=[$inArray $"vlan-ids" &lt;VLAN_ID&gt;]] <br />
			<i>31.01.2025 17:49:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391696</link>
			<guid>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391696</guid>
			<pubDate>Fri, 31 Jan 2025 17:49:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Добавить значения VLAN моста</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391695">Добавить значения VLAN моста</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			LOL. Похоже, за последние 3 года мало кто пытался написать скрипт для существующих trunk-портов моста… Проблема в том, что атрибут vlan-ids в /interface/bridge/vlan — это МАССИВ, поэтому [find vlan-ids=10] не работает с массивом. Я надеялся, что что-то упустил, но поиск в Google и на форуме ничего не подсказал. Зато, по крайней мере с версии 7.16, access-порты можно автоматически обрабатывать с помощью «динамических» записей, создаваемых /interface/vlan и установки pvid= на /interface/bridge/port — так что эта часть стала проще (добавление L3 /interface/vlan на vlan-бридж автоматически добавит bridged в динамический tagged=), то есть одна правка стала лишней.  <br /><br />Но скрипт для «добавления tagged-порта» далеко не простой, и я всё ещё над ним работаю... Вот как я сюда и попал. Я пытался создавать «автоматизированные» скрипты для VLAN на мосту (см. часть 1: <noindex><a href="http://forum.mikrotik.com/t/example-of-automating-vlan-creation-removal-inspecting-using-mkvlan-friends/181480/6)" target="_blank" rel="nofollow" >http://forum.mikrotik.com/t/example-of-automating-vlan-creation-removal-inspecting-using-mkvlan-friends/181480/6)</a></noindex>, а часть 2 со скриптами для управления «bridge vlan filtering» — куда сложнее. &nbsp;<br /><br />Единственный способ, который я нашёл, — это сложный код, который перебирает «dynamic=no» в /interface/bridge/vlans, затем с помощью foreach перебирает массив vlan-ids, чтобы проверить совпадения с искомым VLAN, и тогда делает SET (если совпадений нет — после двух циклов делает ADD нового /interface/bridge/vlan). Если кто-то знает способ получше или хитрость — очень интересно было бы узнать. <br />
			<i>31.01.2025 16:50:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391695</link>
			<guid>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391695</guid>
			<pubDate>Fri, 31 Jan 2025 16:50:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Добавить значения VLAN моста</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391694">Добавить значения VLAN моста</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Я пытаюсь задать некоторые значения в команде /interface bridge vlan, а именно свойство untagged. Обычно я делаю это так: set bridge=BR1 tagged=ether4 [find vlan-ids=10]. Но теперь мне нужно как-то добавить значение к уже существующему. Вот что у меня получилось на данный момент, но работает это неправильно. Ниже приведён полный пример.<br /><br />Пример: &nbsp;<br /># Настройка скрипта &nbsp;<br />/interface bridge add name=BR1 protocol-mode=none vlan-filtering=no &nbsp;<br />/interface bridge vlan &nbsp;<br />add bridge=BR1 untagged=ether2 vlan-ids=10 &nbsp;<br /><br /># Как добавить "ether4" к массиву? &nbsp;<br />set bridge=BR1 untagged=([get value-name=untagged]",ether4") [find vlan-ids=10] <br />
			<i>19.02.2021 04:12:00, pcunite.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391694</link>
			<guid>http://mikrotik.moscow/forum/forum57/84944-dobavit-znacheniya-vlan-mosta/message391694</guid>
			<pubDate>Fri, 19 Feb 2021 04:12:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
