DNS dinámico para nuestros clientes: Gadelek S.L | ||
---|---|---|
Anterior |
Partimos de la base de la primera versión, pero en este caso el cliente enviará un e-mail mediante un script en perl que contendrá la línea que el servidor ejecutará para introducir datos en mysql
En los clientes haremos lo siguiente:
Instalar "libmime-lite-perl"
Instalar "libnet-perl"
Copiar script dnsclient a /usr/local/bin
Modificar $USER y $TO si es necesario en script dnsclient
Añadimos la siguiente tarea en /etc/crontab
05,35 * * * * root /usr/local/bin/dnsclient |
En el servidor haremos lo siguiente:
Configurar un filtro de sieve para que los mails cuyo from contenga "dinamycdns@" los reenvíe a otra dirección, por ejemplo dynamicdns@localhost, correspondiendo esta dirección a una tubería hacia un script. De este modo podemos usar cualquier dirección, por ejemplo administrador@gadelek.com, y los mails correspondientes al dns dinámico son filtrados automáticamente por sieve.
O bien editar /etc/postfix/virtual. Con este método tendremos que tener la dirección dynamicdns@gadelek.com accesible desde fuera
# /etc/postfix/virtual root usuario@dominio.com, beep@localhost dominio.com este texto es ignorado dynamicdns@gadelek.com dynamicdns@localhost |
Después debemos definir el alias para que se mande el e-mail hacia un script que ejecute la orden sql
# /etc/aliases dns: "| sudo /usr/local/bin/updatedns" |
Y poner el script en /usr/local/bin
#!/bin/bash # Recibimos e-mail desde tubería (definida en /etc/aliases) # Ejecutamos la sentencia sql contenida en el mail # y la guardamos en un fichero aleatorio para que no se mezclen # las ip's de los distintos hosts que actualizan contra nosotros FILENAME=`cat /proc/uptime |awk '{print $2}'` grep "update direcciones" > /tmp/$FILENAME mysql -u usuario ips < /tmp/$FILENAME rm /tmp/$FILENAME |