/ Raspberry Pi

Script para actualizar DNS dinámicos de CDMON.COM

Uno de los mayores problemas al montarte un servidor en casa y tirar de tu conexión ADSL/fibra, es que los ISP normalmente nos ofrece una IP dinámica.

Si dispones de un dominio gestionado en cdmon.com, y quieres lidiar con los DNS dinámicos, el siguiente script puede que te ayude:

También lo he dejado en en mi Servidor Git, donde estará siempre actualizado.

#!/bin/bash
### BEGIN INIT INFO
# Provides:          dincdmon
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: actualiza la ip dinamica
# Description:
### END INIT INFO

# datos de acceso a CDMON
USUARIO=tu-usuario
PASSMD5=password-codificado-MD5
HOST=nombre-dominio

# la IP que actualmente tiene nuestro servidor:
IP_ACTUAL=$(dig +short myip.opendns.com @resolver1.opendns.com)

# la IP que tiene guardada cdmon.com
IP_EN_CDMON=$(host $HOST | awk {'print $4'})

#comparamos ambas IPs para ver si hay cambios
if [ "$IP_EN_CDMON" != "$IP_ACTUAL" ];
then
    # y si es que no son iguales, hace lo siguiente
    # establece una variable con el GET que tiene que hacer, con todos los datos
    CHANGE_IP="https://dinamico.cdmon.org/onlineService.php?enctype=MD5&n=$USUARIO&p=$PASSMD5&cip=$IP_ACTUAL"
    # luego al establecer la variable RESULTADO, hace el GET y la variable se queda con la respuesta que le da
    # si es satisfactorio, la respuesta debería ser &resultat=customok&
    RESULTADO=`wget $CHANGE_IP -o /dev/null -O /dev/stdout --no-check-certificate`
    # mostramos en pantalla el resultado
    MENSAJE="Se han actualizado los servidores DNS dinamicos de CDMON.\n"
    echo -e $MENSAJE IP ACTUAL: $IP_ACTUAL
else
	# no hay cambios
	echo -e No hay cambios de IP. IP actual: $IP_ACTUAL. Nada que hacer.
fi

############################################
### Comando para ejecutar el CRON:
# 		chmod +x dincdmon.sh
# 		./dincdmon.sh
### Ejecutarlo cada X tiempo:
#       Crontabs del usuario (crontab -e)
#       Comprobar la ejecución del script cada 5 minutos
#           SHELL=/bin/sh
#           PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/pi/bin
#           */5 * * * * /bin/bash /home/pi/bin/dincdmon.sh
### Iniciar el Script al inicio del sistema
#	sudo cp dincdmon.sh /etc/init.d/dincdmon.sh
#	sudo update-rc.d dincdmon.sh defaults
#
### IMPORTANTE: Debes tener los paquetes "curl", "host", y "dnsutils" instalados.
#
############################ CRÉDITOS
#
# 	Versión de Sergio Moreno <tarteka> (realizado el 8 de abril de 2015)
#	Actualización: 29 de enero de 2015:
#		- reemplazar la forma de obtener la ip actual
# 	blog: https://sinsitio.tk
# 	e-mail: info@tarteka.net
#
# 	Realizado sobre una versión de www.EstebanWeb.cl (1ra Actualización el 16 de enero del 2008)
# 	blog: www.estebanweb.cl/linux
# 	Idea original por Enrique Garcia Alvarez <kike>
# 	kike arroba eldemonionegro punto com
# 	http://www.eldemonionegro.com/wordpress/archivos/2006/01/15/script-para-cdmon/
# 	Modificado por primera vez por Javier xavy en ghalician punto es
# 	Modificado por segunda vez en diciembre del 2007 por Esteban estebanweb.cl
# 	www.estebanweb.cl
# 	Comentado por estebanweb.cl
# 	contacto a esteban iglesias manriquez (todo junto) arroba gmail (.) com
# 	puedes tener más info en www.estebanweb.cl/linux
# 	Y más sobre este script en --->
# 	http://www.estebanweb.cl/linux/index.php/12/2007/%c2%a1el-problema-de-la-ip-dinamica-solucionado-script-para-actualizar-ip-en-cdmon/
# 	Software libre (licencia GNU)para la administracion de dominios en cdmon
# 	Copyright (C) 2005-2006
#
# 	Puedes leer la licencia en español en http://www.viti.es/gnu/licenses/gpl.html
#
############################# Licencia
#
#    Este programa es software libre. Puede redistribuirlo y/o modificarlo
#    bajo los teminos de la Licencia Publica General de GNU segun es publicada
#    por la Free Software Foundation, bien de la version 2 de dicha Licencia
#    o bien (segun su eleccion) de cualquier version posterior.
#
#    Este programa se distribuye con la esperanza de que sea util,
#    pero SIN NINGUNA GARANTIA, incluso sin la garantia MERCANTIL implicita o
#    sin garantizar la CONVENIENCIA PARA UN PROPOSITO PARTICULAR.
#    Vease la Licencia Publica General de GNU para mas detalles.
#    Deberia haber recibido una copia de la Licencia Publica General junto
#    con este programa. Si no ha sido asi, escriba a la
#    Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU.
#    MIRA AQUI PARA SABER MAS ==>>  http://www.gnu.org/copyleft/gpl.html
#
############################# License
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#    SEE HERE FOR MORE ==>>  http://www.gnu.org/copyleft/gpl.html
#
############################ Protocolo
#
#	Puedes visitar el siguiente enlace para obtener una explicación
#	detallada del protocolo:
#	https://support.cdmon.com/entries/24118056-API-de-actualizaci%C3%B3n-de-IP-del-DNS-gratis-dinámico

Imagen de cabecera: Andi | Clipart