Dynamic DNS на Яндексе

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
odioniks
Сообщения: 5
Зарегистрирован: 01 ноя 2019, 07:11

Доброе время суток!
Мой домен делегируется на яндекс и так как у меня ip по dhcp стал искать информацию по изменения ip запросом в dns яндекса.
За основу была взята статья Dynamic DNS на Яндексе силами MikroTik RouterOS
Яндек перестал поддерживать get запросы, скрипт был переделан на post запросы.

Получение ID записи
Получение токена

Код: Выделить всё

:local apiToken ".........";
:local recordId ".......";
:local ttl "........";
:local domain "...........";
:local interfaceName "......";

:local currentInterfaceIp [ :tostr [ /ip address get [/ip address find interface=$interfaceName] address ] ];
:set currentInterfaceIp [ :pick $currentInterfaceIp 0 [ :find $currentInterfaceIp "/" ] ];
:if ([ :len $currentInterfaceIp ] = 0 ) do= {
    :log info "[Ya.DNS] No IP address is assigned to the interface '$interfaceName'.";
    :error "[Ya.DNS] No IP address is assigned to the interface '$interfaceName'.";
}

:local subdomain [ :pick $domain 0 [ :find $domain "." ] ];
:local externalIp [ /resolve $domain ];
:if ($currentInterfaceIp != $externalIp) do={
    :put "[Ya.DNS] IP $externalIp changed to $currentInterfaceIp";
} else={
    :error "[Ya.DNS] IP is not changed";
}

:local result 
    [/tool fetch http-method=post http-header-field="PddToken: $apiToken" http-data="domain=$domain&record_id=$recordId&ttl=$ttl&content=$currentInterfaceIp"  url="https://pddimp.yandex.ru/api2/admin/dns/edit" as-value output=user  ];
из скрипта было убрано

Код: Выделить всё

:local data ($result->"data");
:local error [ :pick $data ([ :find $data "" ] + 7) [ :find $data "" ] ];
:put $error;
:if ($error != "ok") do={
    :log warning "[Ya.DNS] Unable to update record $recordId ($error)";
    :error "[Ya.DNS] Unable to update record $recordId ($error)";
}

:log info "[Ya.DNS] Successfuly updated A record $recordId ($currentInterfaceIp)";
так как result с пустыми значениями, почему не понятно но по факту скрипт отрабатывает корректно.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Спасибо, тема интересная. Жаль лишь, что вы ориентируетесь на очень подкованного юзера. А на наш форум в большинстве своём новички заходят. С таким минимумом в знании сетевых технологий, что можно говорить об их отсутствии. И настолько лаконичная статья им будет непонятна от слова "совсем". Будем надеяться, что всё же будет приличной та часть читателей, кому это будет и интересно и понятно....


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить