Если кому интересно, я сделал (точнее, модифицировал скрипт DynDNS) обновляющий скрипт для сервиса Dynamic DNS от OVH.com. Используйте, копируйте, модифицируйте, публикуйте без проблем.
:global ovhddnsuser "<OVH DynDNS USER>"
:global ovhddnspass "<OVH DynDNS PASS>"
:global theinterface "<ИНТЕРФЕЙС С ВАШИМ ПУБЛИЧНЫМ IP>"
:global ovhddnshost "<OVHDynDNS HOSTNAME>"
:global ipddns [:resolve $ovhddnshost]
:global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ]
:if ([ :typeof $ipfresh ] = nil ) do={
:log info ("OVHDynDNS: Нет IP-адреса на интерфейсе $theinterface")
} else={
:for i from=( [:len $ipfresh] - 1) to=0 do={
:if ( [:pick $ipfresh $i] = "/") do={
:set ipfresh [:pick $ipfresh 0 $i]
}
}
:if ($ipddns != $ipfresh) do={
:log info ("OVHDynDNS: В DNS-записи для $ovhddnshost IP = $ipddns")
:log info ("OVHDynDNS: Текущий IP на $theinterface = $ipfresh")
:log info ("OVHDynDNS: ОБНОВЛЯЕМ $ovhddnshost -> $ipfresh")
:global str "nic/update?system=dyndns&hostname=$ovhddnshost&myip=$ipfresh&wildcard=O FF&backmx=NO&mx=NOCHG"
# Команда для отладки fetch
#:log info ("OVHDynDNS: /tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=(\"/OVHDynDNS.$ovhddnshost\")")
/tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=("/OVHDynDNS.".$ovhddnshost)
:delay 1
:global ovhresult [/file get "OVHDynDNS.$ovhddnshost" contents]
:log info "OVHDynDNS: Ответ OVH: $ovhresult"
:global str [/file find name="OVHDynDNS.$ovhddnshost"]
/file remove $str
:if ($ovhresult = "good $ipfresh\n" ) do={
:log info "OVHDynDNS: УСПЕХ"
} else={
:log info "OVHDynDNS: НЕУДАЧА"
}
:global ipddns $ipfresh
:log info "OVHDynDNS: DNS-запись для $ovhddnshost обновлена на $ipfresh!"
} else={
:log info "OVHDynDNS: Всё норм!"
}
}
Может, стоит опубликовать это на вики — пригодится в будущем. Всем успехов!
:global ovhddnsuser "<OVH DynDNS USER>"
:global ovhddnspass "<OVH DynDNS PASS>"
:global theinterface "<ИНТЕРФЕЙС С ВАШИМ ПУБЛИЧНЫМ IP>"
:global ovhddnshost "<OVHDynDNS HOSTNAME>"
:global ipddns [:resolve $ovhddnshost]
:global ipfresh [ /ip address get [/ip address find interface=$theinterface ] address ]
:if ([ :typeof $ipfresh ] = nil ) do={
:log info ("OVHDynDNS: Нет IP-адреса на интерфейсе $theinterface")
} else={
:for i from=( [:len $ipfresh] - 1) to=0 do={
:if ( [:pick $ipfresh $i] = "/") do={
:set ipfresh [:pick $ipfresh 0 $i]
}
}
:if ($ipddns != $ipfresh) do={
:log info ("OVHDynDNS: В DNS-записи для $ovhddnshost IP = $ipddns")
:log info ("OVHDynDNS: Текущий IP на $theinterface = $ipfresh")
:log info ("OVHDynDNS: ОБНОВЛЯЕМ $ovhddnshost -> $ipfresh")
:global str "nic/update?system=dyndns&hostname=$ovhddnshost&myip=$ipfresh&wildcard=O
# Команда для отладки fetch
#:log info ("OVHDynDNS: /tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=(\"/OVHDynDNS.$ovhddnshost\")")
/tool fetch address=www.ovh.com host=www.ovh.com src-path=$str mode=https user=$ovhddnsuser password=$ovhddnspass dst-path=("/OVHDynDNS.".$ovhddnshost)
:delay 1
:global ovhresult [/file get "OVHDynDNS.$ovhddnshost" contents]
:log info "OVHDynDNS: Ответ OVH: $ovhresult"
:global str [/file find name="OVHDynDNS.$ovhddnshost"]
/file remove $str
:if ($ovhresult = "good $ipfresh\n" ) do={
:log info "OVHDynDNS: УСПЕХ"
} else={
:log info "OVHDynDNS: НЕУДАЧА"
}
:global ipddns $ipfresh
:log info "OVHDynDNS: DNS-запись для $ovhddnshost обновлена на $ipfresh!"
} else={
:log info "OVHDynDNS: Всё норм!"
}
}
Может, стоит опубликовать это на вики — пригодится в будущем. Всем успехов!
