Jump to content
Калькуляторы

Скрипт для freedns.afraid.org

Вчера только настраивал!

Надо ещё проверку смены ип делать, чтобы не долбить сервис напрямую слишком часто

:global currentIP;

:local newIP [/ip address get [find interface="интерфейс-с-инетом"] address];

:if ($newIP != $currentIP) \
do={ \
:set currentIP $newIP; \
:log info "ip address $currentIP changed to $newIP"; \
/system script run фетч-скрипт; \
} else={ \
:log info "No change of IP"; \
}

 

Вот этот скрипт уже можно часто запускать.

Share this post


Link to post
Share on other sites

Вот сделал скрипт. Самое главное, что он работает когда несколько доменов.

Внимательно читаем комментарии.

 

 

##############	Script FreeDNS.afraid.org	##################
##############	PARSER EDITION	##################
##############	CREATED LESHIY_ODESSA	##################

# Указываем "Direct URL", который находится https://freedns.afraid.org/dynamic/
# Если версия RouterOS 5.xx, то убрать из URL шифрование - "https" поменять на "http". Так же смотри ниже.
# Перед знаком "?" поставьте обратный слеш "\".
:global "direct-url" "http://freedns.afraid.org/dynamic/update.php\?КVуjН2lzQmQwSkdkвW9atеNкeTdJаXFtOjg7NTО04zE="

# Указываем URL API "ASCII"
# Войдите под своим аккаунтом и откройте страницу  https://freedns.afraid.org/api/ 
# Затем скопируйте свой URL - Available API Interfaces : ASCII (!!! НЕ XML !!!)
# ВНИМАНИЕ !!!! - Перед вопросительным знаком поставьте обратный слеш "\".
# Если версия RouterOS 5.xx, то убрать из URL шифрование - "https" поменять на "http".
:global "api-url" "http://freedns.afraid.org/api/\?action=getdyndns&sha=62ebн4404cd46сbe38eа8faк01be7dа101478a58b"

# Указываем ваш домен или субдомен.
:global "dns-domain" "name.com"

# Задаем переменную для внешнего (WAN) интерфейса 
# при DUAL ACCESS указываем PPPoE (PPTP) интерфейс. Учитываем регистр букв.
:global "out-interface" "pppoe"

# !!!!!!!!!!!!!!!!! Больше ничего редактировать не нужно !!!!!!!!!!!!!!!!!

# Проверяем есть ли файл с IP домена - freedns.txt
:if ([:len [/file find name=freedns.txt]] > 0) do={
} else={
/tool fetch url=$"api-url" dst-path="/freedns.txt"
}
# Узнаем IP адрес домена с помощью API и парсинга.
# Парсим файл
:local "result" [/file get freedns.txt contents]
:local "startloc" ([:find $"result" $"dns-domain"] + ([:len $"dns-domain"] + 1))
:local "endloc" ([:find $"result" $"direct-url" -1] -1)
:global "dns-domain-ip" [:pick $"result" $"startloc" $"endloc"]

# Узнаем текущий IP адрес на внешнем интерфейсе
:global "current-ip" [/ip address get [find interface=$"out-interface"] address]

# Из полученного IP адреса исключаем маску подсети
:set "current-ip" [:pick $"current-ip" 0 ([:len $"current-ip"]-3) ]

# Сравниваем внешний IP с IP адресом DNS домена. 
:if ($"current-ip" != $"dns-domain-ip") do={

# Если разные, то отправляем на freedns.afraid.org наш внешний IP с помощью Direct URL
:log info ("Service Dynamic DNS: old IP address $"dns-domain-ip" for $"dns-domain" CHANGED to -> $"current-ip"")
/tool fetch url=$"direct-url" keep-result=no
# Скачиваем файл с новым IP через 5 сек.
:delay 5
/tool fetch url=$"api-url" dst-path="/freedns.txt"
} else={
# Чтобы не засорять лог можно/нужно закомментировать эту строку.
:log info ("IP address is NOT CHANGED, the update is not required")
}

# Начиная с версии RouterOS version 6.0rc12 поддерживается шифрование /tool fetch mode=https
# В :global "direct-url" нужно тоже изменить на https://
# Для версии RouterOS 6.xx 
# /tool fetch mode=https url=$"direct-url"

#		http://wiki.mikrotik.com/wiki/Manual:Scripting
#		http://wiki.mikrotik.com/wiki/Manual:Scripting-examples
#		http://wiki.mikrotik.com/wiki/Manual:Tools/Fetch
#		http://forum.ixbt.com/topic.cgi?id=14:60498-86#2373

##############Script FreeDNS.afraid.org##################

Edited by leshiy_odessa

Share this post


Link to post
Share on other sites

Вот сделал скрипт. Самое главное, что он работает когда несколько доменов.

Внимательно читаем комментарии.

 

 

##############	Script FreeDNS.afraid.org	##################
##############	PARSER EDITION	##################
##############	CREATED LESHIY_ODESSA	##################

# Указываем "Direct URL", который находится https://freedns.afraid.org/dynamic/
# Если версия RouterOS 5.xx, то убрать из URL шифрование - "https" поменять на "http". Так же смотри ниже.
# Перед знаком "?" поставьте обратный слеш "\".
:global "direct-url" "http://freedns.afraid.org/dynamic/update.php\?КVуjН2lzQmQwSkdkвW9atеNкeTdJаXFtOjg7NTО04zE="

# Указываем URL API "ASCII"
# Войдите под своим аккаунтом и откройте страницу  https://freedns.afraid.org/api/ 
# Затем скопируйте свой URL - Available API Interfaces : ASCII (!!! НЕ XML !!!)
# ВНИМАНИЕ !!!! - Перед вопросительным знаком поставьте обратный слеш "\".
# Если версия RouterOS 5.xx, то убрать из URL шифрование - "https" поменять на "http".
:global "api-url" "http://freedns.afraid.org/api/\?action=getdyndns&sha=62ebн4404cd46сbe38eа8faк01be7dа101478a58b"

# Указываем ваш домен или субдомен.
:global "dns-domain" "name.com"

# Задаем переменную для внешнего (WAN) интерфейса 
# при DUAL ACCESS указываем PPPoE (PPTP) интерфейс. Учитываем регистр букв.
:global "out-interface" "pppoe"

# !!!!!!!!!!!!!!!!! Больше ничего редактировать не нужно !!!!!!!!!!!!!!!!!

# Проверяем есть ли файл с IP домена - freedns.txt
:if ([:len [/file find name=freedns.txt]] > 0) do={
} else={
/tool fetch url=$"api-url" dst-path="/freedns.txt"
}
# Узнаем IP адрес домена с помощью API и парсинга.
# Парсим файл
:local "result" [/file get freedns.txt contents]
:local "startloc" ([:find $"result" $"dns-domain"] + ([:len $"dns-domain"] + 1))
:local "endloc" ([:find $"result" $"direct-url" -1] -1)
:global "dns-domain-ip" [:pick $"result" $"startloc" $"endloc"]

# Узнаем текущий IP адрес на внешнем интерфейсе
:global "current-ip" [/ip address get [find interface=$"out-interface"] address]

# Из полученного IP адреса исключаем маску подсети
:set "current-ip" [:pick $"current-ip" 0 ([:len $"current-ip"]-3) ]

# Сравниваем внешний IP с IP адресом DNS домена. 
:if ($"current-ip" != $"dns-domain-ip") do={

# Если разные, то отправляем на freedns.afraid.org наш внешний IP с помощью Direct URL
:log info ("Service Dynamic DNS: old IP address $"dns-domain-ip" for $"dns-domain" CHANGED to -> $"current-ip"")
/tool fetch url=$"direct-url" keep-result=no
# Скачиваем файл с новым IP через 5 сек.
:delay 5
/tool fetch url=$"api-url" dst-path="/freedns.txt"
} else={
# Чтобы не засорять лог можно/нужно закомментировать эту строку.
:log info ("IP address is NOT CHANGED, the update is not required")
}

# Начиная с версии RouterOS version 6.0rc12 поддерживается шифрование /tool fetch mode=https
# В :global "direct-url" нужно тоже изменить на https://
# Для версии RouterOS 6.xx 
# /tool fetch mode=https url=$"direct-url"

#		http://wiki.mikrotik.com/wiki/Manual:Scripting
#		http://wiki.mikrotik.com/wiki/Manual:Scripting-examples
#		http://wiki.mikrotik.com/wiki/Manual:Tools/Fetch
#		http://forum.ixbt.com/topic.cgi?id=14:60498-86#2373

##############Script FreeDNS.afraid.org##################

Доброго времени суток всем!!!

тут попытался разобраться с сервисом http://freedns.afraid.org/ так как no-ip.com хоть вроде бы пока как бы и бесплатный но с некоторого времени приходится обновлять свою учетку каждый месяц что не совсем удобно и поэтому решил посмотреть насчёт замены пробовал прикрутить к микротику вышеизложенный скрипт в результате некоторых танцев с бубном http://freedns.afraid.org/ схватил мои послания и всё бы хорошо но как то это разовые и нестабильные случаи и как сказано в описании что должно быть обязательно несколько доменов это критично для работы сервиса?? или только для скрипта??

Может есть ещё какие то идеи на этот счёт

И стоит ли связываться с этим сервисом какой у них интервал обновления информации.... в доменной сети

И может кто подскажет что нибудь другое что можно прикрутить к мкротику....

За ранее благодарен.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this