В общем-то в большей степени памятка для себя, но может еще кому пригодится.
Dynamic DNS — очень полезная штука для тех кто не желает отстегивать провайдеру денег за постоянный IP-адрес. Зачем это надо каждый разбирается сам, мне вот иногда нужно домой ходить по SSH и HTTPS, а вычислять IP методом тыка не хочется.
Для организации динамического DNS нам потребуется с установленным . Все делается с помощью ISPmanager API, описание которого есть в документации. Можно дергать нужный URL например wget'ом, но это не мой случай, т.к. apache у меня остановлен и доступа в панель через браузер нет, а можно использовать утилиту mgrctl, вот это как раз мой вариант.
Система (о как громко сказал) состоит из двух скриптов, серверного и клиентского.
Клиентский скрипт выясняет текущий IP в DNS, сравнивает его с тем что выдан провайдером и при необходимости выполняет процедуру обновления:
#!/bin/sh
date
if [ -f /var/run/tun0.pid ]; then
CURIP=`/sbin/ifconfig tun0 |/usr/bin/grep inet |/usr/bin/awk {'print $2'}`
echo Current IP is $CURIP, getting IP from DNS server
DNSIP=`/usr/sbin/host homelan.megaded.info 82.146.33.122 |grep homelan |awk {'print $4'}`
echo IP in DNS is $DNSIP
if [ $DNSIP != $CURIP ]; then
echo Updating DNS
/usr/bin/ssh root@82.146.33.122 /root/bin/updns.sh $DNSIP $CURIP >> /root/mydyndns/ssh.log
echo IP-address set to $CURIP
echo «--»
else
echo Noting to do. Exiting
echo «--»
fi
else
echo No link
echo «--»
fi
Если необходимо обновление вызывается серверный скрипт, которому в качестве параметров передаются текущий IP в DNS и IP на который его сменить, он и выполняет обновление.
#!/bin/sh
/usr/local/ispmgr/sbin/mgrctl domain.sublist.edit elid="homelan A "$1 plid=megaded.info name=homelan sdtype=A addr=$2 sok=yes
/usr/local/ispmgr/sbin/mgrctl domain.fix elid=megaded.info
Ну и для записи в зоне нужно TTL сделать поменьше, у меня — 10 секунд.
Вроде все.

Зачем так то, ходить куда-то рутом по ssh да еще по ключу без пароля (или как у тебя в кроне будет скрипт авторизовываться на 82.146.33.122)
Не проще ли сходить в ISPmanager по https и там соответственно внести записи нужные в DNS? ;)

Сходить по https не проще, я об этом выше написал, во-первых самому мне туда идти лень, а во-вторых у меня apache не запущен.
Ну а хожедние root'ом по ssh дано только в качестве примера, не более, да и вообще ничего плохого я в этом не вижу.