Tout d'abord il convient de se créer un compte DynHost. Pour cela je vous renvoi à la documentation d'OVH : http://guides.ovh.com/DynDns. Une foie notre compte créé et un domaine paramétré nous utiliserons comme le propose OVH l'utilitaire updatedd dont les sources sont téléchargeables à cette adresse : http://nongnu.askapache.com/updatedd/
Décompressons l'archive
~$ tar xvf updatedd_2.6.tar.gz
Avant d'installer l'utilitaire il convient de le modifier car il y a une petite erreur sur l'adresse de OVH. Pour cela modifier le fichier src/plugins/libovh.h.
~$ nano updatedd-2.6/src/plugins/libovh.h
A la ligne 24, il faudra modifier le ovh.com par www.ovh.com. Ainsi la ligne ressemblera à celle ci.
#define DYNDNSHOST "www.ovh.com"
Il ne nous reste qu'à installer updatedd maintenant.
~$ ./configure
~$ make
~$ su
Mot de passe :
# make install
L'utilisation pour OVH de updatedd ce passe comme suit :
updatedd ovh -- --ipv4 ip username:password host
J'ai donc rédigé un script bash pour vérifier l'IP actuelle, la comparer à l'ancienne et faire les mises à jour si c'est nécessaire. Le voici :
#!/bin/bash
## CONFIGURATION ##
# Connection to OVH DynHost
username=user
password=pass
host=my-host.tld
# How to log
# 1 = true, 0 = false
log_change=1
log_no_change=0
log_file=/var/log/dynhost.log
# File with old IP
old_ip_file=/var/cache/ip_old
# To avoid error "file not found"
touch ${old_ip_file}
touch ${log_file}
# Get Public IP
ip=`w3m -dump http://www.monip.org/ | awk -F': ' '/IP/ { print $2 }'`
# Get Old Public IP
ip_old=`cat ${old_ip_file}`
# Test if IPs are equal
if [ "${ip}" = "${ip_old}" ]
then
if [ "${log_no_change}" = "1" ]
then
echo `date`: No IP change was found >> ${log_file}
fi
else
echo ${ip} > ${old_ip_file}
if [ "${log_change}" = "1" ]
then
echo "`date`:IP has change. (Old : ${ip_old}, New : ${ip})" >> ${log_file}
updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host} >> ${log_file}
else
updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host}
fi
fi
Ensuite il suffit de placer ce script quelque part ;) (pour ma part dans /usr/local/bin) et de configurer un cron pour l'exécution périodique du script ;) !
Voilà bon courage !
PS : Je ne sais pas si j'ai fait une bonne utilisation des dossiers linux. Donc si quelqu'un d'avertis sur le sujet venait à passer par là je serai preneur d'informations !
PS2 : Le script n'est pas parfait, si j'ai du temps un jour j'en ferai un meilleur !
Salut Lermit,
RépondreSupprimerJe te remercie pour ton script et tes explications. C'est parfait pour moi !
Un grand merci! Exactement ce qu'il me fallait.
RépondreSupprimerDe plus, ce script est customisable si l'on a plusieurs sous-domaine chez OVH.
Encore merci
Merci beaucoup !
RépondreSupprimerIncroyable qu'il y ait si peu de doc sur le sujet...
J'ai juste modifié ton script pour qu'il aille récupérer mon ip public sur une page de mon routeur plutôt qu'un site distant.