Mise à jour de votre DNS chez OVH avec DynHost

Posted by

Info : Pour les plus pressés, le script « corrigé » est en fin d’article ().
Il est également disponible sur le repo github suivant, et vous pouvez récupérer le script simplement via un git clone

cd /usr/local/
git clone https://github.com/zwindler/dynhost
chmod +x dynhost/dynhost

Pour ceux qui n’ont pas la chance d’avoir une IP fixe pour leur besoins d’auto-hébergement et qui disposent d’un domaine chez OVH, vous avez plusieurs solutions pour continuer à héberger vos sites et vos services chez vous (comme un indispensable serveur minecraft pour vos collègues ou un serveur web des dernières photos récupérées depuis iCloud).

La plus simple est d’utiliser le client DynDNS ou No-IP de votre routeur ou de votre totobox. Dans mon cas (Orange), les Livebox proposent effectivement ce genre de clients, mais on les retrouve aussi sur des routeurs Linksys ou autre. Malheureusement pour nous pauvres autohébergeurs, les solutions anciennement gratuites DynDNS et No-IP se sont considérablement réduites, et il faut souvent payer à partir d’un certain nombre de sous-domaines.

Pour éviter de devoir payer (c’est une idée fixe un peu chez moi), une solution alternative consiste lorsqu’on a beaucoup de sous domaines à créer des CNAME qui pointent tous vers le même nom de domaine DynDNS du type :

  • sousdomaine1.mondomaine.com IN CNAME mondomaine.dyndns.org
  • sousdomaine2.mondomaine.com IN CNAME mondomaine.dyndns.org

Dans le principe c’est parfait. Dans la pratique, j’ai rencontré quelques difficultés dans la mise à jour de l’IP et les caches DNS de mes clients. J’ai donc profité du fait que j’étais en train de bidouiller sur le sujet pour tester les solutions proposées par OVH (DynHost).

DynHost par OVH

OVH vous propose de faire ça « vous même » : http://guide.ovh.com/DynDns !

L’idée ici est de créer depuis le manager un champ de type DynHost (voir ici pour le tuto complet) ainsi qu’un compte sur le service en ligne éponyme, puis d’installer un petit soft sur un serveur ou une VM dans votre LAN. Ce client va régulièrement vérifier que vous n’avez pas changé d’IP et mettre à jour le cas échéant le DNS chez OVH via le compte DynHost.

DynHost

Historiquement, OVH proposait sur son guide DynDNS un client pour mettre à jour le DynHost depuis Linux. Cependant, ce client hébergé par bozorokus.net (DynHost.tgz) comprenant un script shell et un fichier python ne sont plus disponibles.

J’ai donc réécris le script qui a été amélioré au fil du temps à l’aide des commentaires à ce post.

Modification du script pour nos besoins

Le script initial ne fonctionnait que lorsque le serveur sur lequel il tournait avait un accès direct à Internet avec un adresse IP publique. Ce qui n’est bien entendu pas le cas de la plupart des gens qui passent par un box (ou un routeur) et sur laquelle nous n’avons pas la main.

Historiquement, la ligne en question pour récupérer l’IP publique était

IP=`/sbin/ifconfig $IFACE | fgrep 'inet ad' | cut -f2 -d':' | cut -f1 -d' '

Ici, on récupère sans vergogne l’adresse IP de l’interface réseau concernée et on l’envoie sur Internet dans le champs DynHost renseigné dans votre DNS OVH. Dans mon cas, je me retrouvais avec une IP privée, donc ça ne marchait pas.

Sans avoir besoin de réinventer la roue, un court passage sur StackOverflow m’a permis de remplacer la ligne précédente par une version plus adaptée à l’aide de curl

IP=`curl https://4.ifcfg.me`

C’est si simple que ça ? Et ben oui visiblement. Curl, c’est magique… Il va falloir que je passe du temps sur Curl ! Mais ce n’est pas tout ce qu’on peut améliorer.

Optimisations

Pour éviter de mettre à jour trop souvent le DNS lorsque ça n’est pas nécessaire, le script commençait également par vérifier si l’IP a changée en gardant en mémoire l’ancienne IP dans un fichier texte et en réalisant une simple comparaison.

Cette méthode simple a pourtant ses limites. Si pour une raison ou pour une autre, la mise à jour du DNS se passe mal, le fichier est mis à jour avec la nouvelle IP, et les appels futurs de la commande de mise à jour de l’IP n’iront plus mettre à jour le DNS, que l’on croit faussement à jour.

Plutôt que de comparer l’IP qu’on a « mise en cache local » dans le fichier old.ip, il suffit de réaliser une simple requête DNS sur votre dynhost. Ainsi, si votre IP publique correspond au dynhost, on ne touche à rien, par contre, dans le cas contraire, on met à jour. Tadam!

OLDIP=`dig +short $HOST`

La version complète du script …

Voici (enfin) le script que vous devez déposer sur votre serveur Linux.

#!/bin/sh
################################################################################
#This file is part of zwindler/dynhost
#Copyright (C) 2016  Denis GERMAIN
#
#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 3 of the License, or
#(at your option) 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, see <http://www.gnu.org/licenses/>.
################################################################################
#Logfile: dynhost.log
#
#CHANGE: « HOST », « LOGIN », « PASSWORD » and « LOG_FILE » to reflect YOUR account variables
#OR: use, in argument, a custom file contains « HOST », « LOGIN », « PASSWORD » and « LOG_FILE »
CONFIG_FILE=$1

if [ -f $CONFIG_FILE ]; then
  source $CONFIG_FILE
else 
  echo "$CONFIG_FILE not found, using $HOST, $LOGIN and given PASSWORD ENV"
  LOG_FILE='/usr/local/dynhost/dynhost.log'
fi

echo '----------------------------------' >> $LOG_FILE
echo `date` >> $LOG_FILE

IP=`curl https://4.ifcfg.me`
OLDIP=`dig +short $HOST`
if [ -n "$DEBUG" ]; then
  echo "DEBUG ENV: " $CONFIG_FILE $HOST $LOGIN $PASSWORD $LOG_FILE
fi

if [ "$IP" ]; then
  if [ "$OLDIP" != "$IP" ]; then
    echo -n "Old IP: [$OLDIP]" >> $LOG_FILE
    echo -n "New IP: [$IP]" >> $LOG_FILE
    curl "http://www.ovh.com/nic/update?system=dyndns&hostname=$HOST&myip=$IP" -u $LOGIN:$PASSWORD
  else
    echo "Notice: IP $HOST [$OLDIP] is identical to WAN [$IP]! No update required." >> $LOG_FILE
  fi
else
  echo "Error: WAN IP not found. Exiting!" >> $LOG_FILE
fi

[Edit du 14/11/2016]J’ai ajouté la possibilité d’utiliser un fichier de configuration simple (les variables sont juste déportées vers un fichier à part) suite à une suggestion de « Manu ». Merci à lui.

vi /usr/local/dynhost/dynhost.cfg
#CHANGE: « HOST », « LOGIN », « PASSWORD » and « LOG_FILE » to reflect YOUR account variables
HOST='DYNHOST.VOTREDOMAIN.FR'
LOGIN='VOTREDOMAINOVH-LOGIN'
PASSWORD='VOTREMDP'
LOG_FILE='/usr/local/dynhost/dynhost.log'

[/Edit]

…et son automatisation

Un petit passage en crontab, et hop, DYNHOST.VOTREDOMAIN.FR se met à jour toutes les heures !

crontab -e
00 * * * * /usr/local/dynhost/dynhost

Si vous utilisez le fichier de configuration plutôt que les variables par défaut dans le script, il faut juste le rajouter

crontab -e
00 * * * * /usr/local/dynhost/dynhost /usr/local/dynhost/dynhost.cfg

Client ddclient

[Edit 17/05/2016]

A priori il existe un client dans les dépôts Ubuntu qui fait la même chose… c’est un script Perl avec beaucoup de lignes (le code de hein, pas la configuration qui est identique) donc j’imagine qu’il gère plus de choses. Cependant des utilisateurs m’ont remonté des difficultés à le faire fonctionner (bugs?).

[/Edit]

43 comments

  1. Super tuto !
    Je m’en suis servi pour mon site en remplaçant seulement l’utilisation d’ipcheck par :
    wget -q -O – ‘http://www.ovh.com/nic/update?system=dyndns&hostname=’$HOST’&myip=’$IP –user=$LOGIN –password=$PASSWORD >> $SCRIPT_PATH/dynhost.log

    Tout marche niquel, merci !

  2. Merci à toi aussi !

    Effectivement avec wget ça fonctionne également, ce qui a l’avantage non négligeable de permettre de s’affranchir du DynHost.tgz.

    Je met à jour le script sur l’article dans ce sens ! Bien vu ;-)

  3. bonjour, moi je crois avoir un problème avec le script, je ne mis connais pas énormément mais si je « lis » bien le script , il ne met a jour l’ip que si celle-ci diffère de celle déjà présent… Et mon problème est la, dans les logs il m’inscrit:
    ———————————-
    mardi 3 novembre 2015, 08:32:09 (UTC+0100)
    DynHost
    Old IP: 92.112.85.111
    New IP: 92.112.85.111
    Update!
    j’ai juste changé l’ip ici, mais dans tout les cas c’est la même ip, donc pourquoi met-il, « update »?
    bien que l’ip se met bien à jour, j’ai peur de tombé en abuse
    merci d’avance :)

  4. Si le log affiche ceci, c’est que l’instruction « if » a considéré que les chaines de caractères $IP et $OLDIP ne sont pas identiques ce qui ne semble pas être le cas « à l’œil nu ».

    La première idée qui me vient à l’esprit serait des caractères invisibles en trop qui fausseraient le test. Pour une raison que j’ignore, une des deux chaines contient peut être un caractère spécial ou d’espacement, ce qui n’est pas visible dans le log mais pose problème lors de la comparaison.

    Un moyen simple de s’en assurer est de tester à la main.
    IP=`curl ifconfig.me`
    OLDIP=`dig +short $HOST`
    echo « x${IP}x${OLDIP}x »

    S’il n’y a pas de différences à la main, vous pouvez modifier le script pour que le log nous affiche les IPs entre des séparateurs
    echo « x${OLDIP}x » au lieu de echo $OLDIP par exemple.

    Si ça ne nous donne toujours pas de coupable, vous pouvez toujours pousser un peu à l’aide de la commande « od -x » qui nous affichera l’ensemble des chaines en hexadecimal et affichera les éventuels caractères spéciaux invisibles.

    Si le problème vient de là, il faudra adapter le script pour s’affranchir des caractères spéciaux qui nous ennuient.

    Si le problème ne vient pas de là, il pourrait s’agir d’un problème de compatibilité du script avec certaines version de l’interpréteur (normalement sh) ? Il faudra peut être réécrire la partie comparaison de chaine de caractères pour que cela fonctionne dans votre cas.

    Mais commençons déjà par trouver quel hypothèse est la bonne avant de tout réécrire ;-)

  5. heu…
    Désolé, même après avoir relu je ne suis pas sur de comprendre. J’ai quand même testé en changeant le script comme dit plus haut et dans les logs, cela n’as rien changé, mais dans la console voila le résultat:
    « x90.43.199.90×90.43.199.90x »
    Merci et désolé d’avance :-)

  6. j’ai vu, enfin je crois que vous avez modifié le script…
    et bien voici le log:
    ———————————-
    mardi 3 novembre 2015, 19:51:51 (UTC+0100)
    DynHost
    Old IP: x90.43.199.92x
    New IP: x90.43.199.92x
    Update!

    (IPs légèrement changé) mais toujours une update qui ne sert a rien :(…
    Cordialement

  7. Bonjour ! Super tuto :)
    Etant débutant, dig m’a posé pas mal de soucis (;;connection timed out; no servers could be reached)
    J’ai cherché deux heures avant de comprendre que c’était simplement parce que je n’avais pas de serveur DNS sur la machine qui executait le script.
    Deux solutions du coup : soit rajouter un serveur dns connu dans le fichier /etc/resolv.conf, soit ajouter l’option @serveur_dns_connu dans dig.
    J’ai choisi la deuxième option en invoquant `dig @8.8.8.8 +short $HOST`
    Merci encore pour le tuto

  8. C’est encore moi, j’ai un soucis :
    Quand je met dynhost.monsite.ovh ça fonctionne, par contre quand je met http://www.monsite.ovh ça n’a pas l’air de fonctionner.

    Mon utilisateur a bien pour zone : monsite.ovh et comme sous domaine : *

  9. Je n’ai jamais essayé le sous-domaine à « * ». Est ce qu’en déclarant explicitement « www » en sous domaine ça marche ?

    www IN CNAME dynhost.domaine.fr.

  10. wget -q -O — ‘http://www.ovh.com/nic/update?system=dyndns&hostname=’$HOST’&myip=’$IP –user=$LOGIN –password=$PASSWORD >> $SCRIPT_PATH/dynhost.log
    marche pas chez moi, il a fallu retirer un tiret a l’option -O
    wget -q -O – ‘http://www.ovh.com/nic/update?system=dyndns&hostname=’$HOST’&myip=’$IP –user=$LOGIN –password=$PASSWORD >> $SCRIPT_PATH/dynhost.log

  11. Ok c’est peut être une erreur de ma part ou une spécificité d’une version de wget.

    Sur quel OS par curiosité ? Pour que je puisse reproduire et corriger en fonction ?

  12. Ok, effectivement. Je ne sais pas pourquoi ça marche chez moi (ubuntu) et pas sur une jessy.

    En lisant le man le double tiret sert à échapper les tirets suivants pour qu’ils ne soient pas interprétés comme des options, donc pas du tout ce que je veux faire…

    Merci pour le retour, je modifie en conséquence.

  13. Bonjour,
    Je viens d’installer votre script, ça fonctionne … en partie …

    Cela me remplie le log avec ce genre de chose:
    mardi 26 avril 2016, 12:50:01 (UTC+0200)
    Old IP: [81.***.**.**]New IP: [ 86.**.**.***]nochg 86.76.31.247

    ….

    En fait j’ai l’impression que cela fait un wget sur la racine de mon site web.

    Une idée ?

    Merci d’avance

  14. Pas certain de voir le problème exact ?
    Visiblement la première partie du script avec dig et curl fonctionne, puisqu’on log l’ancienne et la nouvelle IP.
    Moi ce que je conseille dans ce genre de cas, c’est de tester les commandes à la main. Typiquement, là je tenterai déjà de renseigner les variables d’environnements HOST, IP (nouvelle ou 1.1.1.1 le temps de tester) LOGIN et PASSWORD à la main puis d’exécuter
    wget -q -O - 'http://www.ovh.com/nic/update?system=dyndns&hostname='$HOST'&myip='$IP --user=$LOGIN --password=$PASSWORD
    Normalement dans le manager d’OVH, la modification devrait être quasi instantanée.

  15. Bonjour
    Quand je me rend sur http://www.ovh.com/nic/
    la page est introuvable ce qui me fait dire que le script n’est plus valide.
    (sinon au niveau des log le script parait fonctionner)
    Auriez vous une alternative à me proposer..?
    sachant que OVH propose le logiciel Bali Dynamic DNS
    ( https://www.ovh.com/fr/g2024.mutualise_dynhost )
    et que je suis sur mac (pas sur windows donc)
    j’ai trouvé http://hdex.free.fr/?page_id=8
    ainsi que https://appquarter.com/products-ip-monitor.html
    J’expérimente sur un vieux mac (10.6) donc ce dernier est incompatible.
    Merci par avance.

    Ps: plutot que Cron vous pouvez utiliser launchControl ou Lingon (GUI)

  16. Bonjour,

    Si l’URL ne répond pas (probablement pas une vraie page web en réalité mais un webservice), le script lui fonctionne. Pour s’en convaincre, je vous propose de tester à la main, sur votre machine :
    root@mac:~# HOST=dynhost.VOTRESITE.fr
    root@mac:~# LOGIN=VOTRELOGIN
    root@mac:~# PASSWORD=VOTREMDP
    root@mac:~# wget -q -O – ‘http://www.ovh.com/nic/update?system=dyndns&hostname=’$HOST’&myip=’1.1.1.1 –user=$LOGIN –password=$PASSWORD
    good 1.1.1.1

    Si vous allez voir sur l’enregistrement DynHost de votre manager OVH passera à 1.1.1.1 ce qui prouve donc bien que ça fonctionne toujours. Et 5 minutes plus tard, votre cron remettra la bonne IP dans le DynHost et tout rentrera dans l’ordre.

    Pour launchControl ou Lingon, je ne connaissais pas (n’ayant pas de mac). A vrai dire j’utilise crontab par habitude par rapport à mon travail mais ça a effectivement l’air plus user friendly ;-)

    [Edit] Petite note complémentaire : en fait tout ne rentre pas forcément dans l’ordre. Pour des problématiques de cache DNS, mon script n’avait pas remarqué le changement d’IP côté OVH et me renvoyait « IP x.fr [x.x.x.x] is identical to WAN [y.y.y.y]! No update required. ».
    Pour autant, ce cas de figure est rare et ne devrait pas arriver en conditions réelles : ce script sert à mettre à jour le DNS quand l’IP de l’abonné change. Ici, on a changé artificiellement l’IP côté DNS alors que l’IP abonné est restée la même !

  17. Je n’ai eu aucun soucis avec ddclient, j’ai fais plus test avant d’en parler sur mon blog mais toutes les mises à jour de mon ip wan se sont déroulé avec succès même en déplaçant la vm où il est installé d’host en host.

  18. C’est bon à savoir.
    Je ne l’utilise pas personnellement puisque mon script me suffisait.
    J’ai regardé rapidement pour CentOS il y a pas mal de dépendances et il faut récupérer les sources. Ce n’est pas difficile en soit mais est ce nécessaire ? J’imagine que les cas d’erreurs sont mieux gérés ?

  19. Bonjoour,
    J’aime bien ton script.
    Simple et efficace.
    J’ai juste une suggestion qui serait de faire un fichier conf différent par host à mettre en argument.
    Par ex :
    # dynhost dynhost1.cfg; dynhost dynhost2.cfg
    etc…
    Voici le diff :
    — dynhost.orig 2016-11-05 10:09:28.026161238 +0100
    +++ dynhost 2016-11-05 11:07:11.642110072 +0100
    @@ -18,27 +18,35 @@
    ################################################################################
    #Logfile: dynhost.log
    #
    -#CHANGE: « HOST », « LOGIN » and « PASSWORD » to reflect YOUR account variables
    +#CHANGE: « HOST », « LOGIN », « PASSWORD » and « LOG_FILE » to reflect YOUR account variables
    +#OR: use, in argument, a custom file contains « HOST », « LOGIN », « PASSWORD » and « LOG_FILE »
    +
    +if [ -f « $1 » ]; then
    + . $1
    +else
    + HOST=DYNHOST.VOTREDOMAIN.FR
    + LOGIN=VOTREDOMAINOVH-LOGIN
    + PASSWORD=VOTREMDP
    + LOG_FILE=VOTREFICHIERLOG
    +fi

    -HOST=DYNHOST.VOTREDOMAIN.FR
    -LOGIN=VOTREDOMAINOVH-LOGIN
    -PASSWORD=VOTREMDP
    -SCRIPT_PATH=’/usr/local/’

    -echo ———————————- >> $SCRIPT_PATH/dynhost.log
    -echo `date` >> $SCRIPT_PATH/dynhost.log
    +echo « ———————————- » >> $LOG_FILE
    +echo « `date` » >> $LOG_FILE

    -IP=`curl https://4.ifcfg.me`
    +IP=`curl -s https://4.ifcfg.me`
    OLDIP=`dig +short $HOST`

    if [ « $IP » ]; then
    if [ « $OLDIP » != « $IP » ]; then
    – echo -n « Old IP: [$OLDIP] » >> $SCRIPT_PATH/dynhost.log
    – echo -n « New IP: [$IP] » >> $SCRIPT_PATH/dynhost.log
    – wget -q -O – ‘http://www.ovh.com/nic/update?system=dyndns&hostname=’$HOST’&myip=’$IP –user=$LOGIN –password=$PASSWORD >> $SCRIPT_PATH/dynhost.log
    + echo « Old IP: [$OLDIP] » >> $LOG_FILE
    + echo « New IP: [$IP] » >> $LOG_FILE
    + echo « Notice: IP $HOST [$OLDIP] is updated to WAN [$IP]. » >> $LOG_FILE
    + wget -q -O – ‘http://www.ovh.com/nic/update?system=dyndns&hostname=’$HOST’&myip=’$IP –user=$LOGIN –password=$PASSWORD >> $LOG_FILE
    + echo >> $LOG_FILE
    else
    – echo « Notice: IP $HOST [$OLDIP] is identical to WAN [$IP]! No update required. » >> $SCRIPT_PATH/dynhost.log
    + echo « Notice: IP $HOST [$OLDIP] is identical to WAN [$IP]! No update required. » >> $LOG_FILE
    fi
    else
    – echo « Error: WAN IP not found. Exiting! » >> $SCRIPT_PATH/dynhost.log
    + echo « Error: WAN IP not found. Exiting! » >> $LOG_FILE
    fi

  20. Bonne idée. Je n’en avais pas l’utilité mais c’est « plus propre ». Je mettrai à jour le script.
    Merci pour la suggestion.

  21. Bonsoir,

    Pour moi cela semble ne plus fonctionner…

    Wan Ip not found en sortie, les paramètres me semble bon pourtant…

    Merci

  22. Le problème ne se situe pas dans les paramètres mais dans la commande qui récupère votre @IP WAN. A priori pas de lien avec la mise à jour du script que je viens de faire.

    la commande IP=`curl https://4.ifcfg.me` semble ne pas fonctionner dans certains cas mais je n’arrive pas à déterminer pourquoi.
    Est ce que je peux avoir des informations sur l’OS que vous utilisez et si vous êtes derrière un proxy ou juste une box classique ?

  23. Bonjour,

    J’aime beaucoup l’idée du script, mais je n’arrive pas à le faire fonctionner, visiblement pour un problème d’authentification.

    En ligne de commande, j’affecte les variables avec les bonnes valeurs et je lance
    wget -O – ‘http://www.ovh.com/nic/update?system=dyndns&hostname=’$HOST’&myip=’$IP –user=$LOGIN –password=$PASSWORD

    J’obtiens :
    Resolving http://www.ovh.com (www.ovh.com)… 198.27.92.1
    Connecting to http://www.ovh.com (www.ovh.com)|198.27.92.1|:80… connected.
    HTTP request sent, awaiting response… 401 Authorization Required
    Reusing existing connection to http://www.ovh.com:80.
    HTTP request sent, awaiting response… 401 Authorization Required
    Username/Password Authentication Failed.

    En ouvrant cette URL (en remplaçant les variables par leur valeurs), je n’arrive pas non plus à m’authentifier. Pourtant, je peut me connecter sur mon compte OVH.
    J’ai un login qui est sous forme d’adresse mail, serait-ce le problème ?

  24. Je ne sais pas trop pour le login, moi j’utilise un login du type [2lettres][5chiffres]. Tu n’as pas du tout de login de cette forme ?

    Clairement si le wget ne fonctionne pas avec ce message d’erreur c’est bien un problème de login et/ou de mdp.

  25. Merci pour le retour hyper rapide.

    J’étais en effet sur cette piste, mais je ne trouve pas.
    J’ai aussi un compte ID du type « 2 lettre 6 chiffres »-ohv mais ne fonctionne pas non plus (directement du browser). C’est bien en effet un problème de credential, rien à voir avec ton script, mais je ne trouve pas…
    Je ferai un retour dès que j’ai avancé.

  26. Bon ça fonctionne.
    J’ai peut-être mal interprété à la première lecture de ce que tu attendais dans la variable LOGIN=’VOTREDOMAINOVH-LOGIN’.

    Merci en tous cas.

  27. Bonjour,

    en utilisant votrre script, j’obtiens dans les logs:
    Old IP: [1.1.1.1]New IP: [90.90.40.48]

    Mais pourtant dans OVH l’adresse n’est pas changée. je ne comprends pas pourquoi :/

    Une idée ? Merci d’avance

  28. Hi
    No. This is the full logs:
    ———————————-
    dimanche 11 mars 2018, 16:42:29 (UTC+0100)
    Notice: IP dynhost.tata.fr [90.90.40.40] is identical to WAN [90.90.40.40]
    ———————————-
    dimanche 11 mars 2018, 16:42:59 (UTC+0100)
    Notice: IP dynhost.tata.fr [90.90.40.40] is identical to WAN [90.90.40.40]
    ———————————-
    dimanche 11 mars 2018, 16:43:45 (UTC+0100)
    Old IP: [1.1.1.1]New IP: [90.90.40.40]———————————-
    Something is it missing ?
    Thank you
    Regards

  29. Hum… We’re missing the real error here. This script is really simple and I didn’t put much effort in error catching.
    This could be a permission error, missing dependancie or even an error related to the distribution (uncommon curl version for ex)
    Two strategies when you have this kind of issues (you can apply it to all scripts, not just this one):
    – always run it by hand first (not in crontab) because it will show the real error. Also I added a DEBUG flag in latest version which should output variables (export DEBUG=1 && ./dynhost ……..)
    – if it doesn’t, open the script and run the commands one by one. Regularly check the output and the variables value

  30. Hello, désolé j’ai écris en anglais par erreur, j’étais sur un blog anglais juste avant.
    Sinon j’ai trouvé, j’ai pas mis le bon identifiant :). Je me demande comment il a fait pour trouver l’ancienne IP quand même :)
    Merci!

  31. Pas de souci.
    Pour répondre à la question comment il trouve l’ancienne IP, c’est juste une requête DNS classique avec un « dig », ya pas de connexion à OVH pour cette partie ;)

  32. Bonjour, merci pour votre script, je l’ai utilisé en remplacement d’une solution beaucoup plus compliquée que j’avais avant. J’ai particulièrement apprécié l’astuce de dig pour récupérer l’ancienne IP. Beaucoup plus logique.
    J’ai fait une modification pour la récupération de l’IP WAN, afin de ne pas utiliser le service ifcfg.me .
    Elle ne fonctionne que pour les utilisateurs de LiveBox, si jamais il y en a parmi vos lecteurs. Il faut remplacer le bloc qui assigne $IP par :
    IP=curl -s -X POST -H « Content-Type: application/json » -d ‘{« parameters »:{}}’ http://192.168.1.1/sysbus/NMC:getWANStatus | sed -e ‘s/.« IPAddress »: »(.) », »Remo.*/\1/g’

    Cette commande interroge directement la box via son API intégrée. Trouvée ici :
    https://communaute.orange.fr/t5/ma-connexion/Recup%C3%A9ration-de-l-IP-WAN-d-une-Livebox-Play-noire/td-p/226035

  33. L’article n’est pas à jour, car je n’utilise plus ifcfg.me (suite à des souci de connexion), je l’ai remplacé par une astuce à base de « dig +short myip.opendns.com @resolver1.opendns.com » que m’a donné un autre lecteur. C’est beaucoup plus efficace en terme de temps de réponse.

    Cela étant dit, j’aime beaucoup votre solution pour les Livebox qui a l’avantage de ne s’appuyer sur aucun service tiers. Je ferai peut être une version « spéciale box Orange » basée sur votre découverte :)

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.