DynDns изменить, перейдя на веб-страницу (http) в терминале

У меня есть провайдер с сервисом DynDns, где я должен заставить сервер использовать http для связи с серверами DynDns на провайдере. Это выглядит так:

https://[username]:[password]@dyndns.myisp.com/nic/update?hostname=[host]&myip=[ip] 

Теперь вот моя проблема: я не знаю, как заставить мой сервер "использовать" эту http-команду для изменения IP-адреса. Я имею в виду, что знаю о cronjobs и о том, как сделать простой скрипт bash, но я не знаю, какую команду использовать, чтобы мой компьютер "посетил" эту страницу.

1 ответ

Обычно сервер делает именно это, он обслуживает, если вы говорите о HTTP-сервере.

В большинстве случаев маршрутизатор - DSL модем отвечает за такие действия. Проверьте следующее, которое может относиться к вашей ситуации:

Типичные домашние пользователи получают динамические IP-адреса от своих интернет-провайдеров почти каждый раз, когда они подключаются к Интернету или когда заканчивается срок их аренды.

Когда такой пользователь хочет разместить домашний сервер, доступный для Интернета, необходимо выбрать одно из двух решений:

  • Плати за статический IP
  • Найти сервис динамического DNS

При использовании второго решения применяются следующие вещи:

  1. Пользователь сохраняет динамическую природу IP-адресов.
  2. Пользователь информирует службу динамического DNS каждый раз, когда ему назначается новый динамический IP.
  3. Служба динамического DNS сопоставляет IP-адрес пользователя с URL-адресом.

Вторая часть описанного выше процесса обычно выполняется либо маршрутизатором-DSL-модемом пользователя, либо приложением-демоном (сервисом), работающим на компьютере-сервере пользователя. Служба подключается к поставщику динамического DNS и информирует поставщика о текущем IP-адресе пользователя.

Чтобы выполнить вышеупомянутую задачу, сначала посмотрите в своем маршрутизаторе - настройки модема DSM, который является наиболее чистым и простым способом. Если модем не поддерживает эту функцию, обратитесь к интернет-провайдеру, если он предоставляет приложение для этой задачи. Наконец, запускайте сценарий на сервере каждый раз, когда получен новый IP-адрес, или каждые n минут (обычно не менее 10 минут).

Примеры различных методов сообщения динамической службе DNS о получении нового IP-адреса:

#! / Bin/ Баш

#################################################################
## ChangeIP.com bash update script                             ##
#################################################################
## Written 3/18/09 by Tom Rinker, released to the Public Domain##
#################################################################
## This is a simple bash script to preform a dDNS update with  ##
## ChangeIP.com. It uses only bash and wget, and so should be  ##
## compatible with virtually any UNIX/Linux based system with  ##
## bash. It is intended to be executed as a cron job, and      ##
## will only execute an update of dDNS records when the IP     ##
## address changes. As ChangeIP.com dDNS records have a 5 min  ##
## Time-To-Live, it is basically pointless and wasteful to     ##
## execute it more often than every 5 minutes. This script     ##
## supports logging all activity, in 3 available log levels,   ##
## and supports simple management of log file size.            ##
#################################################################
## To use this script:                                         ##
## 1) set the variables in the script below                    ##
## 2) execute the script as a cron job                         ##
#################################################################
## WARNING: This script has two potential security holes.      ##
## First, the username and password are stored plaintext in    ##
## the script, so a system user who has read access to the     ##
## script could read them. This risk can be mitigated with     ##
## careful use of file permissions on the script.              ##
## Second, the username and password will show briefly to other##
## users of the system via ps, w, or top. This risk can be     ##
## mitigated by moving the username and password to .wgetrc    ##
## This level of security is acceptable for some installations ##
## including my own, but may be unacceptable for some users.   ##
#################################################################

################ Script Variables ###############################
IPPATH=/var/log/IP                    # IP address storage file
TMPIP=/tmp/tmpIP                      # Temp IP storage file
LOGPATH=/var/log/changeip.log         # Log file
TEMP=/tmp/temp                        # Temp storage file
CIPUSER=                              # ChangeIP.com Username
CIPPASS=                              # ChangeIP.com Password
CIPSET=1                              # ChangeIP.com recordset
LOGLEVEL=2                            # 0=off,1=normal,2=verbose
LOGMAX=500                            # Max log lines, 0=unlimited
#################################################################

# get current IP from ip.changeip.com, and store in $TEMP
wget -q -U "rinker.sh wget 1.0" -O $TEMP ip.changeip.com

# parse $TEMP for the ip, and store in $TMPIP
grep IPADDR < $TEMP | cut -d= -s -f2 | cut -d- -s -f1 > $TMPIP

# compare $IPPATH with $TMPIP, and if different, execute update
if diff $IPPATH $TMPIP > /dev/null
  then                                # same IP, no update
      if [ $LOGLEVEL -eq 2 ]
        then                          # if verbose, log no change
          echo "--------------------------------" >> $LOGPATH
          date >> $LOGPATH             
          echo "No Change" >> $LOGPATH
          echo -e "IP: \c" >> $LOGPATH
          cat $IPPATH >> $LOGPATH
      fi
  else                                # different IP, execute update
      wget -q -U "rinker.sh wget 1.0" -O $TEMP --http-user=$CIPUSER --http-password=$CIPPASS "https://nic.changeip.com/nic/update?cmd=update&set=$CIPSET"
      if [ $LOGLEVEL -ne 0 ]
        then                          # if logging, log update
          echo "--------------------------------" >> $LOGPATH
          date >> $LOGPATH             
          echo "Updating" >> $LOGPATH
          echo -e "NewIP: \c" >> $LOGPATH
          cat $TMPIP >> $LOGPATH
          if [ $LOGLEVEL -eq 2 ]
            then                      # verbose logging
              echo -e "OldIP: \c" >> $LOGPATH
              cat $IPPATH >> $LOGPATH
              cat $TEMP >> $LOGPATH   # log the ChangeIP.com update reply
          fi
      fi
      cp $TMPIP $IPPATH               # Store new IP
fi

# if $LOGMAX not equal to 0, reduce log size to last $LOGMAX number of lines
if [ $LOGMAX -ne 0 ]
  then
      tail -n $LOGMAX $LOGPATH > $TEMP
      cp $TEMP $LOGPATH
fi
Другие вопросы по тегам