Обновляем ip адрес на своём сервере с бесплатным доменом

Часто бывает ситуация, когда из-за применения новых настроек на домашнем роутере или банального перезапуска, приходится лезть на площадку noip.com и менять ручками IP адрес. А если вы за 200 или более километров и у вас нет возможности узнать адрес? Вот и у меня, был (слава богу и есть), дистанционный узнаватель IP адреса - отец, но он бывает и в отпуск может уехать, иль же быть на работе, а обновить адрес нужно здесь и сейчас.


Да, вы скажете что на маршрутизаторах есть такая функция для бесплатных доменов и будете правы, но увы - либо маршрутизатор может быть старый, либо не работает эта функция или же только в одной доменной зоне работает. Короче много нюансов, а нам же хочется что бы было всё как у людей.

Обновляем ip адрес на своём сервере с бесплатным доменом Python, Программирование, IT, Скрипт, Домен, Бесплатно, Linux и Windows, Linux, Системное администрирование

Пример того, как это сделано не в стоковой прошивке d-link dir320. Поверьте весьма не богатый и не гибкий способ настройки (я люблю зону отличную от ddns.net). Обновляется что в оригинальной прошивке, что в не оригинальной через зад, про остальные роутеры типа томсон я вообще молчу, тут хоть работает :).


Так вот, сервис на самом деле не плохой и предоставляет превосходный api (дёргай хоть через get или через post - работает, что хорошо для применения в разнообразных ситуациях и сценариях), а значит можно использовать как на обычном пк, так и на сервере. В данном случае он применяется в сервере с debian на борту, и работает как запасной вариант (на всякий случай, так как про другой, более крутой скрипт я напишу чуть позже, если зайдёт данный материал).


Кому интересно, могут ознакомиться с api сервиса noip тут https://www.noip.com/integrate/request


Пишем скрипт:


import re, urllib

if __name__ == "__main__":

web_page = urllib.urlopen("https://2ip.ru")

web_page = web_page.read()

ip = re.findall("(\d+\.\d+\.\d+\.\d+)", web_page)[0]

username = 'ВАШ Э-МАЙЛ'

password = 'ВАШ ПАРОЛЬ ОТ СЕРВИСА'

host = 'ВАШ ХОСТ, ПО ТИПУ ЭТОГО blog.bounceme.net'

update = urllib.urlopen("https://"+str(username)+":"+str(password)+

"@dynupdate.no-ip.com/nic/update?hostname="+str(host)+"&myip="+ ip)

res = update.read()

if re.match("(good)|(nochg)", res):

print 'ok'

else:

print 'error\n' + res


Что делает скрипт?

Думаю особо пояснять тут смысла нет, если в общих чертах, то он заходит на всем наверное известный 2ip, парсит оттуда ваш ip адрес, запоминает его и далее использует в переменной, в api сервиса noip. При успешной отработке скрипта, адрес в сервисе меняется, а вы в терминале получаете сообщение "ок", в противном случае будет напечатано сообщение о ошибке.


сохраняем в файл noip.py и запускаем python noip.py


Результат:

Обновляем ip адрес на своём сервере с бесплатным доменом Python, Программирование, IT, Скрипт, Домен, Бесплатно, Linux и Windows, Linux, Системное администрирование

Запихиваем в крон и радуемся :)

Программирование на python

625 постов11.8K подписчика

Добавить пост

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу