Привет! Хочу поделиться скриптом для обновления IP на dyndns.com. Я взял за основу существующий скрипт и собрал нужный мне вариант. Использую его при наличии двух провайдеров (основного и резервного, не объединённых) для обновления DNS в случае переключения с основного соединения на резервное и наоборот.
# выводим отладочную информацию
:log info ("<<<< ЗАПУСК СКРИПТА ОБНОВЛЕНИЯ DYNDNS.COM >>>>")
:local ddnsuser <yourUsername>
:local ddnspass <yourPassword>
:local ddnshost <yourDynDnsHost>
:local ipddns [:resolve $ddnshost];
:log info ("Скрипт DynDNS: зарегистрирован IP = $ipddns")
# получаем текущий IP из интернета (на случай двойного NAT)
/tool fetch mode=http address="checkip.dyndns.com" src-path="/" dst-path="/dyndns.checkip.html"
:delay 1
:local result [/file get dyndns.checkip.html contents]
# обрабатываем полученный IP
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local ipfresh [:pick $result $startLoc $endLoc]
:log info "Скрипт DynDNS: IP из интернета = $ipfresh"
:if ($ipddns != $ipfresh) do={
:log info "DynDNS: Требуется обновление IP, отправляем UPDATE...!"
:local str "/nic/update?hostname=$ddnshost&myip=$ipfresh&wildcard=NOCHG&mx=NOCHG&bac kmx=NOCHG"
/tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser \
password=$ddnspass dst-path=("/DynDNS.".$ddnshost)
:delay 1
:local str [/file find name="DynDNS.$ddnshost"];
/file remove $str
:global ipddns $ipfresh
:log info "Скрипт DynDNS: IP обновлён на $ipfresh!"
} else={
:log info "Скрипт DynDNS: Изменений нет";
}
# выводим отладочную информацию
:log info ("<<<< ЗАПУСК СКРИПТА ОБНОВЛЕНИЯ DYNDNS.COM >>>>")
:local ddnsuser <yourUsername>
:local ddnspass <yourPassword>
:local ddnshost <yourDynDnsHost>
:local ipddns [:resolve $ddnshost];
:log info ("Скрипт DynDNS: зарегистрирован IP = $ipddns")
# получаем текущий IP из интернета (на случай двойного NAT)
/tool fetch mode=http address="checkip.dyndns.com" src-path="/" dst-path="/dyndns.checkip.html"
:delay 1
:local result [/file get dyndns.checkip.html contents]
# обрабатываем полученный IP
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local ipfresh [:pick $result $startLoc $endLoc]
:log info "Скрипт DynDNS: IP из интернета = $ipfresh"
:if ($ipddns != $ipfresh) do={
:log info "DynDNS: Требуется обновление IP, отправляем UPDATE...!"
:local str "/nic/update?hostname=$ddnshost&myip=$ipfresh&wildcard=NOCHG&mx=NOCHG&bac
/tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser \
password=$ddnspass dst-path=("/DynDNS.".$ddnshost)
:delay 1
:local str [/file find name="DynDNS.$ddnshost"];
/file remove $str
:global ipddns $ipfresh
:log info "Скрипт DynDNS: IP обновлён на $ipfresh!"
} else={
:log info "Скрипт DynDNS: Изменений нет";
}
