{"id":37,"date":"2010-12-07T23:25:59","date_gmt":"2010-12-07T22:25:59","guid":{"rendered":"http:\/\/crudelis.fr\/blog\/?p=37"},"modified":"2010-12-07T23:25:59","modified_gmt":"2010-12-07T22:25:59","slug":"dynhost-ovh","status":"publish","type":"post","link":"https:\/\/crudelis.fr\/site\/sblog\/2010\/12\/dynhost-ovh\/","title":{"rendered":"Le DynDns selon OVH, DynHost"},"content":{"rendered":"<p>Lorsqu'on se lance dans l'aventure du home server, on se retrouve bien vite confront\u00e9 au probl\u00e8me de l'IP changeant r\u00e9guli\u00e8rement. Le premi\u00e8re r\u00e9ponse \u00e0 \u00e7a fut bien vite le service Dyndns.<\/p>\n<p>Avec\u00a0 l'arriv\u00e9e d'un nom de domaine, je voulais quelque chose de plus \"propre\", me voila donc parti pour le service DynHost de chez OVH.<br \/>\n<!--more--><br \/>\nLa documentation concernant <a href=\"http:\/\/guides.ovh.net\/DynDns\" target=\"_blank\">DynHost<\/a> sur le site OVH est assez incompl\u00e8te, mais on y trouve tout de m\u00eame un script int\u00e9ressant, la partie concernant <a href=\"http:\/\/guides.ovh.net\/DynDns#link6\" target=\"_blank\">Ipcheck.py<\/a>.<\/p>\n<p>Dans cette version du script, fourni par OVH, la ligne Updatehost \u00e0 d\u00e9j\u00e0 \u00e9t\u00e9 modifi\u00e9e.<br \/>\nMais le probl\u00e8me se situe dans le script sh dynhost. En effet, il va chercher l'adresse locale de la machine et non l'adresse publique.<\/p>\n<pre>IP=`\/sbin\/ifconfig $IFACE | fgrep \"inet ad\" | cut -f2 -d\":\" | cut -f1 -d\" \"`<\/pre>\n<p>En ce qui me concerne, je me trouve derri\u00e8re une neufbox, la solution la plus r\u00e9pandue est d'interroger un site du style <a href=\"http:\/\/checkip.dyndns.org\/\" target=\"_blank\">checkip.dyndns.org<\/a> pour en extraire l'adresse IP publique.<br \/>\nAfin de ne pas faire appel inutilement \u00e0 un serveur distant pour une info que j'ai d\u00e9j\u00e0 chez moi, j'ai choisi d'interroger directement la neufbox \u00e0 ce sujet.<\/p>\n<pre>IP=`wget http:\/\/192.168.1.1\/0_0 &amp;&amp; cat 0_0 | grep \".[0-9]{1,3}<\/td>\" | cut -d '&lt;&#039; -f 2 | cut -d &#039; &#039; -f 2 &amp;&amp; rm -f 0_0`<\/pre>\n<p>Pour expliquer un peu cette commande, on t\u00e9l\u00e9charge la page d'accueil de la neufbox, qui affiche notre adresse IP publique.<\/p>\n<pre>wget http:\/\/192.168.1.1\/0_0<\/pre>\n<p>On recherche la ligne concernant l'affichage de l'IP.<\/p>\n<pre>grep \".[0-9]{1,3}<\/td>\"<\/pre>\n<p>On utilise ensuite la commande <a href=\"http:\/\/pwet.fr\/man\/linux\/commandes\/cut\">cut<\/a> pour couper la chaine de caract\u00e8re et garder uniquement l'adresse IP.<\/p>\n<pre>cut -d '&lt;&#039; -f 2 | cut -d &#039; &#039; -f 2<\/pre>\n<p>Cette m\u00e9thode devrait pouvoir \u00eatre appliqu\u00e9e \u00e0 toutes les box du march\u00e9.<\/p>\n<p>Le script ainsi modifi\u00e9 va cherch\u00e9 l'adresse IP publique et met \u00e0 jour votre champ dynhost avec cette adresse, seulement si elle a chang\u00e9.<\/p>\n<p>Le second probl\u00e8me que m'a pos\u00e9 ce script est qu'il utilise, par d\u00e9faut, des chemins relatifs. Apr\u00e8s avoir plac\u00e9 le script dans un dossier, histoire de faire les choses proprement, le script n'ex\u00e9cutait plus ipcheck.py, car il ne le trouvait tout simplement pas.<br \/>\nIl est donc plus prudent d'indiquer les chemins absolus dans le script.<\/p>\n<p>Le script complet, modifi\u00e9 par mes soins:<\/p>\n<pre>#! \/bin\/sh\n\n# OVH - DynHost\n#\n# Permet de \nmettre \u00e0 jour le champ DYNHOST\n# pour votre nom de domaine.\n\n# La mise \u00e0 jour ne se fait que si l adresse IP\n# a effectivement chang\u00e9.\n# Fichier de log: dynhost.log\n\n# Mod par Maniack Crudelis\n\nHOST='nom_domaine'\nLOGIN='login'\nPASSWORD='password'\nOPTIONS=\"-l -v\" #-l = log; -v = verbose\nLOCALPATH=...\/DynHost\n\n# Obtention de l adresse IP actuelle et celle enregistr\u00e9e lors du dernier changement\n\tIP=`wget http:\/\/192.168.1.1\/0_0 &amp;&amp; cat 0_0 | grep \".[0-9]{1,3}<\/td>\" | cut -d ' $LOCALPATH\/last_dynhost.log\n\t\t\techo `date` &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t\t\techo D\u00e9marrage de DynHost &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t\t\techo -n \"Ancienne IP: \" &gt;&gt; $LOCALPATH\/last_dynhost.log\n                \techo $OLDIP &gt;&gt; $LOCALPATH\/last_dynhost.log\n               \t\techo -n \"Nouvelle IP: \" &gt;&gt; $LOCALPATH\/last_dynhost.log\n              \t\techo $IP &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t\t\techo \"Mise \u00e0 jour!\" &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t\t\techo \"Lancement de \nipcheck.py\" &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t\t\tcd $LOCALPATH &amp;&amp; python ipcheck.py $OPTIONS -a $IP $LOGIN $PASSWORD $HOST &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t\t\tcat $LOCALPATH\/last_dynhost.log &gt;&gt; $LOCALPATH\/dynhost.log\n         \telse\n               \t\techo IP Identique!\n#Pour ne pas surcharger le log, si l ip ne change pas, log de la derni\u00e8re execution seulement\n                echo `date` &gt; $LOCALPATH\/last_dynhost.log\n                echo D\u00e9marrage de DynHost &gt;&gt; ~$LOCALPATH\/last_dynhost.log\n\t\techo IP identique, pas de changement. Pas d appel \u00e0 ipcheck. &gt;&gt; $LOCALPATH\/last_dynhost.log\n         \tfi\n         else\n\t\techo ---------------------------------- &gt; $LOCALPATH\/last_dynhost.log\n\t\techo `date` &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t\techo D\u00e9marrage de DynHost &gt;&gt; $LOCALPATH\/last_dynhost.log\n\t \techo Panique \u00e0 bord: Aucune IP Disponible!! &gt;&gt; $LOCALPATHt\/last_dynhost.log\n\t\tcat $LOCALPATH\/last_dynhost.log &gt;&gt; $LOCALPATH\/dynhost.log\n         fi<\/pre>\n<p>Le script doit maintenant \u00eatre ex\u00e9cut\u00e9 r\u00e9guli\u00e8rement, pour cela on ajoute une t\u00e2che au crontab.<\/p>\n<pre>crontab -e\n*\/5 * * * * 'chemin de dynhost'\/DynHost\/dynhost &gt; \/dev\/null<\/pre>\n<p>Le script sera ainsi ex\u00e9cut\u00e9 toutes les 5 minutes, en cas de changement de l'adresse publique du serveur, le champ dns sera imm\u00e9diatement mis \u00e0 jour.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsqu'on se lance dans l'aventure du home server, on se retrouve bien vite confront\u00e9 au probl\u00e8me de l'IP changeant r\u00e9guli\u00e8rement. Le premi\u00e8re r\u00e9ponse \u00e0 \u00e7a fut bien vite le service Dyndns. Avec\u00a0 l'arriv\u00e9e d'un nom de domaine, je voulais quelque chose de plus \"propre\", me voila donc parti pour le service DynHost de chez OVH.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[3],"tags":[16,17,30,31],"class_list":["post-37","post","type-post","status-publish","format-standard","hentry","category-home-server","tag-dyndns","tag-dynhost","tag-neufbox","tag-ovh"],"_links":{"self":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/37","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":0,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"wp:attachment":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}