Der er sikkert mange bud på hvordan man lige smækker et script sammen til at opdatere DNS, når ens IP adresse ændrer sig. Her er det jeg bruger. Input til forbedringer er velkomne.
Jeg har tænkt på at finde en sms gateway, men dem jeg kunne finde (ikke nødvendigvis gratis) havde ingen sikkerhed. Dvs. kun http. En enkelt havde mulighed for, at man kunne smide password i en MD5 sum, men det jo heller ikke ligefrem super sikkert med rainbow tables mig her og der.
Anyways... Her er mit shell script. Ret selv (variablerne) til efter behov.
Scriptet læser filen domain_list, der indeholder en liste over de domæner, der skal opdateres. Domænenavn og host (A-record) ser scriptet som det samme.
Smid det hvor du har lyst og kør via crontab (her vises hvert minut):
# use /bin/bash to run commands, overriding the default set by cron
SHELL=/bin/bash
# disable mail
MAILTO=""
# My crontab entries
*/1 * * * * $HOME/path/to/ip_watcher.sh >> /dev/null 2>&1
#!/bin/bash
# URL to update dns: https://ssl.gratisdns.dk/ddns.phtml?u=<username>&p=<kodeord>&d=<domæne>&h=<host>
#-----------#
# Variables#
#-----------#
my_ip=`curl -s http://checkip.dyndns.org | awk '{print $6}' | awk ' BEGIN { FS = "<" } { print $1 } '`
echo "MY ip is:" $my_ip
ns_ip=`dig +short @ns1.gratisdns.dk domain.dk`
echo "NS ip is:" $ns_ip
gdns_user="dit gratisdns username"
gdns_pw="dit gratisdns password"
spath=`dirname $0`
domain_list="$spath/domain_list"
logfile="$spath/ipchange_log"
timestamp=`date "+%F %T";`
#-----------#
# Script #
#-----------#
if [ $my_ip != $ns_ip ] ; then
echo "Your ip has changed... Time to update DNS records!"
echo -e "\n###### $timestamp ######" >> $logfile
echo -e "#\tIP address changed to:\t#" >> $logfile
echo -e "#\t$my_ip\t\t#" >> $logfile
echo -e "#\t\t\t\t#" >> $logfile
echo -e "#\tDNS updated for:\t#" >> $logfile
for domain in `cat $domain_list` ; do
curl -s https://ssl.gratisdns.dk/ddns.phtml?u=$gdns_user&p=$gdns_pw&d=$domain&h=$domain
echo -e "#\t$domain\t\t#" >> $logfile
done
echo "#################################" >> $logfile
else
echo "Your ip has NOT changed... The network is stable!"
fi