<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: 6.2 Проблема со скриптом dynDns]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме 6.2 Проблема со скриптом dynDns форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 18 Aug 2026 21:08:54 -0400</pubDate>
		<item>
			<title>6.2 Проблема со скриптом dynDns</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285890">6.2 Проблема со скриптом dynDns</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			На моем RB2011 с версией 6.2 этот скрипт не работает!! <br />
			<i>25.08.2013 20:15:00, specialist.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285890</link>
			<guid>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285890</guid>
			<pubDate>Sun, 25 Aug 2013 20:15:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>6.2 Проблема со скриптом dynDns</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285889">6.2 Проблема со скриптом dynDns</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Столкнулся с такой же проблемой, но решил её, изменив на это: global dyndnsForce ""<br />:global previousIP "$previousIP" # Устанавливаем нужные переменные<br />:local username "user"<br />:local password "1234"<br />:local hostname "host.dyndns.org"<br /><br />:global dyndnsForce ""<br />:global previousIP "$previousIP"<br /><br /># выводим какую-то отладочную информацию<br />:log info ("UpdateDynDNS: username = $username")<br />:log info ("UpdateDynDNS: password = $password")<br />:log info ("UpdateDynDNS: hostname = $hostname")<br />:log info ("UpdateDynDNS: previousIP = $previousIP")<br /><br /># получаем текущий IP-адрес из интернета (на случай двойной NAT)<br />/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"<br />:delay 1<br />:local result [/file get dyndns.checkip.html contents]<br /><br /># разбираем полученный IP-адрес<br />:local resultLen [:len $result]<br />:local startLoc [:find $result ": " -1]<br />:set startLoc ($startLoc + 2)<br />:local endLoc [:find $result "&lt;/body&gt;" -1]<br />:local currentIP [:pick $result $startLoc $endLoc]<br />:log info "UpdateDynDNS: currentIP = $currentIP"<br /><br /># Убери знак # с следующей строки, чтобы заставить обновление происходить каждый раз - полезно для отладки,<br /># но из-за этого можно попасть в чёрный список DynDNS!<br /><br />#:set dyndnsForce true<br /><br /># Определяем, нужно ли обновление dyndns<br /># подробнее об запросах обновлений dyndns тут <noindex><a href="http://www.dyndns.com/developers/specs/syntax.html" target="_blank" rel="nofollow" >http://www.dyndns.com/developers/specs/syntax.html</a></noindex><br /><br />:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={<br />:set dyndnsForce false<br />:set previousIP $currentIP<br />:log info "$currentIP или $previousIP"<br />/tool fetch user=$username password=$password mode=http address="members.dyndns.org" \<br />src-path="nic/update?system=dyndns&hostname=$hostname&myip=$currentIP&wildcard=no<WBR/>&shy;" \<br />dst-path="/dyndns.txt"<br />:delay 1<br />:local result [/file get dyndns.txt contents]<br />:log info ("UpdateDynDNS: Обновление dyndns нужно")<br />:log info ("UpdateDynDNS: Результат обновления Dyndns: ".$result)<br />:put ("Результат обновления Dyndns: ".$result)<br />/tool e-mail send from=email@gmail.com server=173.194.77.108 to=me@gmail.com subject="Current IP is $currentIP"<br />:log info "Email с новым IP-адресом отправлен"<br />} else={<br />:log info ("UpdateDynDNS: Обновление dyndns не требуется")<br />} <br />
			<i>23.08.2013 10:57:00, henrysim.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285889</link>
			<guid>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285889</guid>
			<pubDate>Fri, 23 Aug 2013 10:57:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>6.2 Проблема со скриптом dynDns</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285888">6.2 Проблема со скриптом dynDns</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет, ahedx! Проблема в объявлении переменных без значения. Не знаю почему, но если ты добавишь “” (кавычки, без значения) в конце этих двух строк ниже, скрипт заработает нормально:<br /><br />:global dyndnsForce<br />:global previousIPdynDNS<br /><br />Если оставлять эти переменные без значения и без кавычек, скрипт не запускается. Попробуй изменить свой скрипт на:<br /><br />:global dyndnsForce “”<br />:global previousIPdynDNS “”<br /><br />Попробуй еще раз и скажи, заработало ли. <br />
			<i>21.08.2013 16:45:00, eldersouza.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285888</link>
			<guid>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285888</guid>
			<pubDate>Wed, 21 Aug 2013 16:45:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>6.2 Проблема со скриптом dynDns</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285887">6.2 Проблема со скриптом dynDns</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Пытаюсь добавить новую обработку ошибок из 6.2 в скрипт, потому что если хостнейм не существует, то скрипт просто падает. Пытался добавить по примеру: <noindex><a href="http://wiki.mikrotik.com/wiki/Manual:Scripting#Catch_run-time_errors" target="_blank" rel="nofollow" >http://wiki.mikrotik.com/wiki/Manual:Scripting#Catch_run-time_errors</a></noindex>. Но on-error возвращает скриптовую ошибку и сбрасывает скрипт (ну, довольно иронично). Так что думаю, у них есть несколько багов, которые нужно поправить в 6.3. //Временно удалил previousIP, потому что работаю с 6.2, также добавил опцию исключения хостнеймов («!» префикс), чтобы можно было поместить динамические и статические хосты в один список. Еще пробовал добавить on-error к другим if-блокам, но результат был тот же.<br /><br /># Определяем переменные<br />:local list<br />:local comment<br />:local newip<br />:local oldip<br />:log info "Ищем измененные динамические хосты"<br /><br /># Перебираем каждую запись в списке адресов.<br />:foreach i in=[/ip firewall address-list find] do={<br /><br /># Получаем первые пять символов имени списка<br /> &nbsp;:set list [:pick [/ip firewall address-list get $i list] 0 5]<br /><br /># Если они 'host_', то, похоже, есть совпадение - обрабатываем<br /> &nbsp;:if ($list = "host_") do={<br /><br /># Получаем комментарий для этого элемента списка адресов (это имя хоста, которое нужно использовать)<br /> &nbsp; &nbsp;:set comment [/ip firewall address-list get $i comment]<br /> &nbsp; &nbsp;:set oldip [/ip firewall address-list get $i address]<br /><br /># Разрешаем его и устанавливаем запись списка адресов соответствующим образом.<br /> &nbsp; &nbsp;: if ($comment != "") do={<br />	: if ([:find $comment "!"] = 0) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:log info "Динамический хост имеет статический IP ($comment)";<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else={<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :set newip [:resolve $comment];<br />	/ip firewall address-list set $i address=$newip;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :log info "Хост обновлен ( $comment -&gt; $newip )";<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br /> &nbsp; &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;}<br /> &nbsp;} on-error={ :log info "Разрешение $comment не удалось"};<br /> &nbsp;:log info "Завершено обновление динамических хостов" <br />
			<i>21.08.2013 09:59:00, Netsplite.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285887</link>
			<guid>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285887</guid>
			<pubDate>Wed, 21 Aug 2013 09:59:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>6.2 Проблема со скриптом dynDns</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285886">6.2 Проблема со скриптом dynDns</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			К слову, в версии 6.3 всё вернется обратно. В 6.2 глобальные переменные были nil, а локальные — nothing… После многочисленных проблем они меняют всё обратно к nothing в 6.3. Отправлено с моего SCH-I545 через Tapatalk 2. <br />
			<i>19.08.2013 11:11:00, efaden.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285886</link>
			<guid>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285886</guid>
			<pubDate>Mon, 19 Aug 2013 11:11:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>6.2 Проблема со скриптом dynDns</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285885">6.2 Проблема со скриптом dynDns</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			После обновления RouterOS с 6.1 на 6.2 возникла проблема с обновлением внешнего IP через скрипт DynDNS. Использую следующий скрипт:<br /><br />Устанавливаем необходимые переменные:<br />`:local username "ahedxx"`<br />`:local password "1642@1642"`<br />`:local hostname " izone-me.dyndns.org "`<br />`:global dyndnsForce`<br />`:global previousIP`<br /><br />Выводим некоторую отладочную информацию:<br />`:log info ("UpdateDynDNS: username = $username")`<br />`:log info ("UpdateDynDNS: password = $password")`<br />`:log info ("UpdateDynDNS: hostname = $hostname")`<br />`:log info ("UpdateDynDNS: previousIP = $previousIP")`<br /><br />Получаем текущий IP-адрес из интернета (в случае двойной NAT):<br />`/tool fetch mode=http address=“ checkip.dyndns.org ” src-path=“/” dst-path=“/dyndns.checkip.html”`<br />`:delay 1`<br />`:local result [/file get dyndns.checkip.html contents]`<br /><br />Парсим текущий IP-адрес:<br />`:local resultLen [:len $result]`<br />`:local startLoc [:find $result ": " -1]`<br />`:set startLoc ($startLoc + 2)`<br />`:local endLoc [:find $result “” -1]`<br />`:local currentIP [:pick $result $startLoc $endLoc]`<br />`:log info “UpdateDynDNS: currentIP = $currentIP”`<br /><br />Удалите # на следующей строке, чтобы принудительно обновлять каждый раз — полезно для отладки, но можно попасть в черный список DynDNS!<br />`#:set dyndnsForce true`<br /><br />Определяем, нужно ли обновление DynDNS, больше информации по запросу обновлятора DynDNS:<br /><noindex><a href="http://www.dyndns.com/developers/specs/syntax.html" target="_blank" rel="nofollow" >http://www.dyndns.com/developers/specs/syntax.html</a></noindex><br /><br />`:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={`<br />`:set dyndnsForce false`<br />`:set previousIP $currentIP`<br />`:log info “$currentIP or $previousIP”`<br />`/tool fetch user=$username password=$password mode=http address=“ members.dyndns.org ” src-path=“nic/update?system=dyndns&hostname=$hostname&myip=$currentIP&wildcard=no<WBR/>&shy;” dst-path=“/dyndns.txt”`<br />`:delay 1`<br />`:local result [/file get dyndns.txt contents]`<br />`:log info (“UpdateDynDNS: Dyndns update needed”)`<br />`:log info ("UpdateDynDNS: Dyndns Update Result: ".$result)`<br />`:put ("Dyndns Update Result: ".$result)`<br />`} else={`<br />`:log info (“UpdateDynDNS: No dyndns update needed”)`<br />`}<br /><br />С уважением. <br />
			<i>05.08.2013 10:26:00, ahedx.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285885</link>
			<guid>http://mikrotik.moscow/forum/forum57/71632-6.2-problema-so-skriptom-dyndns/message285885</guid>
			<pubDate>Mon, 05 Aug 2013 10:26:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
