{"id":632,"date":"2011-10-06T03:38:59","date_gmt":"2011-10-06T01:38:59","guid":{"rendered":"http:\/\/www.superkikim.com\/?p=632"},"modified":"2015-09-02T16:16:11","modified_gmt":"2015-09-02T14:16:11","slug":"script-de-mise-a-jour-ddns-zoneedit-com-en-bashsh","status":"publish","type":"post","link":"https:\/\/akim.sissaoui.com\/en\/informatique\/script-de-mise-a-jour-ddns-zoneedit-com-en-bashsh\/","title":{"rendered":"Script de mise \u00e0 jour DDNS ZoneEdit.com en bash\/sh"},"content":{"rendered":"<p>EDIT 30.08.2012:<\/p>\n<p>Mon script a arr\u00eat\u00e9 de fonctionn\u00e9 il y a quelques mois. Je n&#8217;ai pas pris le temps de r\u00e9soudre le probl\u00e8me avant aujourd&#8217;hui.<\/p>\n<p>En fait, whatismyip.org a d\u00e9cid\u00e9 de bloquer les requ\u00eates par script, et pour ce faire en remplacer l&#8217;adresse IP retourn\u00e9e sur sa page par une image. Bien s\u00fbr, l&#8217;impact a \u00e9t\u00e9 pour tous les clients de ce type se servant de whatismyip.org y compris dydns.org. Ceux-ci ont r\u00e9agit en cr\u00e9ant la page checkip.dydns.org.<\/p>\n<p>Afin de r\u00e9soudre le probl\u00e8me donc, j&#8217;ai du trouver la parade pour extraire l&#8217;adresse IP de checkip.dydns.org, ce que j&#8217;ai trouv\u00e9 sur un <a href=\"https:\/\/www.linux.com\/community\/forums\/command-line\/using-wget-checkipdyndnsorg-and-sed\" target=\"_blank\">forum<\/a>. Vive la communaut\u00e9. Le script ci-dessous est donc corrig\u00e9.<\/p>\n<hr \/>\n<p>J&#8217;ai un compte ZoneEdit.com que j&#8217;utilise pour acc\u00e9der facilement \u00e0 mon r\u00e9seau domestique. Jusque l\u00e0, j&#8217;avais un routeur avec client ddns int\u00e9gr\u00e9. Ca fonctionne tr\u00e8s bien, mais comme j&#8217;ai un serveur, et que j&#8217;ai commenc\u00e9 \u00e0 d\u00e9placer tous les services dessus, je me suis pench\u00e9 sur la possibilit\u00e9 de faire les update ddns directement depuis mon serveur. Voil\u00e0 ce que \u00e7a donne.<\/p>\n<p>L&#8217;ex\u00e9cution se fait par<\/p>\n<pre lang=\"bash\">.\/ddns [hote]<\/pre>\n<p>hote \u00e9tant le nom cours, la zone \u00e9tant param\u00e9tr\u00e9e dans le script ci-dessous.<\/p>\n<p>hote = nom d&#8217;une machine (par exemple www ou maison ou tintin)<br \/>\nzone = domaine.tld (par exemple mondomain.com ou chezmoi.fr ou milou.be)<\/p>\n<p>Tous les commentaires dans le scripts son normalement suffisemment explicite. Mais si vous avez des questions, postez un commentaire. J&#8217;y r\u00e9pondrai volontiers.<\/p>\n<pre lang=\"bash\">#!\/bin\/sh\r\n#\r\n#       script de mise \u00e0 jour DDNS pour un compte zoneedit.com\r\n#\tAuteur: Akim Sissaoui\r\n# \tSite web: https:\/\/akim.sissaoui.com\r\n#\r\n \r\n# Ex\u00e9cution du script: .\/ddns [hostname]\r\n#\r\n# ATTENTION: NE pas ex\u00e9cuter .\/ddns [fqdn] mais bien .\/ddns [hostname] avec le nom court du syst\u00e8me.\r\n#\r\n# Si aucun h\u00f4te n'est sp\u00e9cifi\u00e9, l'adresse IP sera adress\u00e9e \u00e0 toute la zone en @.domaine.dlt\r\n \r\n \r\n# Indication des d\u00e9tails de votre compte zoneedit.com et adresse email pour la confirmation de mise \u00e0 jour\r\nUSER=[nom d'utilisateur zoneedit]\r\nPASS=[mot de passe zoneedit]\r\nZONE=[domaine.ext]\r\nEMAIL=votre@adresse.email\r\n \r\n# Constantes n\u00e9cessaires pour l'enregistrement des messages de retour\r\nTMP1=\/tmp\/ddns_tmp1\r\nTMP2=\/tmp\/ddns_tmp2\r\n \r\n# R\u00e9cup\u00e9ration de l'adresse IP actuelle\r\ncurrentip=`wget --no-check-certificate -q checkip.dyndns.org -O index.html &amp;&amp; cat index.html|cut -d ' ' -f 6 | cut -d '&lt;' -f 1`   \r\n# Cr\u00e9ation de la fonction de mise \u00e0 jour du DynDNS chez Zoneedit.com   updateddns() { \t# Envoie de la mise \u00e0 jour pour le h\u00f4te indiqu\u00e9 et envoi d'un email de confirmation \t\r\nwget -O $TMP1 --http-user=$USER --http-passwd=$PASS --no-check-certificate \"https:\/\/dynamic.zoneedit.com\/auth\/dynamic.html?host=$1.$ZONE\"   \t\r\n\r\necho ZoneEdit.com - Mise \u00e0 jour DDNS > $TMP2\r\n\techo Heure: `date '+%T - %e %B'` >> $TMP2\r\n\techo H\u00f4te: $1 >> $TMP2\r\n\techo Zone: $ZONE >> $TMP2\r\n\techo IP: $currentip >> $TMP2\r\n \r\n\tcat $TMP1 >> $TMP2\r\n \r\n\tcat $TMP2 | mail -s \"ZoneEdit.com - Mise \u00e0 jour pour  $1.$ZONE\" $EMAIL\r\n\trm -f $TMP1 $TMP2\r\n\t}\r\n \r\n# V\u00e9rification et si n\u00e9cessaire cr\u00e9ation de la constante \/tmp\/myip contenant l'adresse IP publique \r\n# et ex\u00e9cution imm\u00e9diate de la mise \u00e0 jour\r\n \r\nif [ ! -f \/tmp\/$1.myip ]\r\n\tthen\r\n\t\techo $currentip > \/tmp\/$1.myip\r\n\t\tupdateddns $1\r\n\t\techo \"Il semble que c'\u00e9tait la premi\u00e8re ex\u00e9cution. La mise \u00e0 jour a \u00e9t\u00e9 demand\u00e9e et la constante cr\u00e9e.\"\r\n\t\texit\r\nfi\r\n \r\n# V\u00e9rification de la date de cr\u00e9ation de la constante myip (recr\u00e9\u00e9e \u00e0 chaque ex\u00e9cution). Si moins de deux minutes, abandon du script\r\n \r\nlastcheck=`date -ur \/tmp\/$1.myip +%s`\r\nfrequency=$(( `date -u +%s` - $lastcheck ))\r\n \r\nif [ \"$frequency\" -lt \"120\" ] \r\n\tthen\r\n\t\techo \"Derni\u00e8re v\u00e9rification il y a moins de deux minutes. Patientez un peu avant de recommencer afin d'\u00e9viter d'attirer les foudres de dyndns.org\"\r\n\t\texit\r\nfi\r\n \r\n# V\u00e9rification de l'IP et comparaison \u00e0 l'IP pr\u00e9c\u00e9demment enregistr\u00e9e. Si l'IP a chang\u00e9, on recr\u00e9e la constante \/tmp\/myip avec la nouvelle IP, et on demande l'update de zoneedit.com\r\n \r\nif [ \"$currentip\" !=  \"`cat \/tmp\/$1.myip`\" ]\r\n\tthen\r\n\t\techo \"L'IP a chang\u00e9. La mise \u00e0 jour va \u00eatre effectu\u00e9e\"\r\n\t\trm \/tmp\/$1.myip\r\n\t\techo $currentip > \/tmp\/$1.myip\r\n\t\tupdateddns $1\r\n\t\techo \"Mise \u00e0 jour effectu\u00e9e\"\r\n\telse\r\n\t\techo \"L'adresse IP n'a pas chang\u00e9. La mise \u00e0 jour n'est pas n\u00e9cessaire\"\r\n\t\trm \/tmp\/$1.myip\r\n\t\techo $currentip > \/tmp\/$1.myip\r\nfi\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>EDIT 30.08.2012: Mon script a arr\u00eat\u00e9 de fonctionn\u00e9 il y a quelques mois. Je n&#8217;ai pas pris le temps de r\u00e9soudre le probl\u00e8me avant aujourd&#8217;hui. En fait, whatismyip.org a d\u00e9cid\u00e9 de bloquer les requ\u00eates par script, et pour ce faire en remplacer l&#8217;adresse IP retourn\u00e9e sur sa page par une image. Bien s\u00fbr, l&#8217;impact a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[220],"tags":[56],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts\/632"}],"collection":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/comments?post=632"}],"version-history":[{"count":8,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts\/632\/revisions"}],"predecessor-version":[{"id":1045,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/posts\/632\/revisions\/1045"}],"wp:attachment":[{"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/media?parent=632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/categories?post=632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/akim.sissaoui.com\/en\/wp-json\/wp\/v2\/tags?post=632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}