Installer le client DynDns ipcheck pour Raspbian et OVH

DynDNS est un service permettant à des utilisateurs qui utilisent une adresse IP dynamique de disposer quand même d’un nom de domaine.

Dans cet article je vais vous expliquer comment installer le client DynDns « ipcheck » pour Raspbian avec un nom de domaine chez OVH.

Préparation

Vous devez installer curl et python avant de commencer ce tutoriel :

apt-get install curl python

1. Créez un DynHost depuis le manager d’OVH

Depuis le manager d’OVH, allez dans « Domaines & DNS » et dans « Zone DNS (Mode avancé) ». Cliquer sur « Type DynHOST ».

Dans le champ sous-domaine, renseignez le nom de votre serveur Raspbian et dans IP, renseignez votre IP publique actuel (allez ici pour la connaitre).

tutoriel-inadyn-01

Ici, créez vos identifiants afin que ipcheck puisse mettre à jour votre adresse IP.

tutoriel-inadyn-02

Afin de vérifier vos informations d’authentification, vous pouvez cliquer sur éditer afin de voir ces informations :

tutoriel-inadyn-03

 

2. Installer le client ipcheck :

Créez le répertoire qui va accueillir l’application ipcheck :

mkdir /etc/ipcheck
mkdir /var/ipcheck/

Téléchargez les fichiers ici.

cd /etc/ipcheck
wget http://sourceforge.net/projects/ipcheck/files/ipcheck.py/download
mv download ipcheck.py
wget http://sourceforge.net/projects/ipcheck/files/ipcheck.conf/download
mv download ipcheck.conf

Créez un script de mise à jour d’IP pour votre serveur :

vi maj_ip.sh
#!/bin/sh

HOST="host.domain.tld"
LOGIN="login"
PASSWORD="password"
OPTIONS=""

getip()
{
        IP=`/usr/local/bin/curl http://checkip.dyndns.org 2>/dev/null | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p'`

        if [ -f /tmp/old.ip ]; then
                OLDIP=`cat /tmp/old.ip`
        else
                OLDIP=""
        fi
}

getip

if [ "$IP" != "" ]; then
        if [ "$OLDIP" != "$IP" ]; then
                if [ "$OPTIONS" =  "" ]; then
                        OPTIONS="-a $IP"
                fi

                echo `date` >> /tmp/ipcheck_log
                echo "----update" >> /tmp/ipcheck_log
                echo $IP > /tmp/old.ip
                /usr/local/bin/python /etc/ipcheck/ipcheck.py $OPTIONS $LOGIN $PASSWORD $HOST > /dev/null
        fi
fi

Changez les droits des fichiers

chmod 600 /etc/ipcheck/ipcheck.conf
chmod 700 /etc/ipcheck/maj_ip.sh

Ensuite, pour mettre à jours votre DynHost, exécuter cette commande :

/etc/ipcheck/maj_ip.sh

Pour finir, rajouter ce script dans la crontab :

crontab -e
*/10 * * * * /etc/ipcheck/maj_ip.sh
  • zouze Eater

    il faut remplacer (les caractères > sont remplacés par le code ASCII « > »:

    echo `date` >> /tmp/ipcheck_log
    echo « —-update » >> /tmp/ipcheck_log
    echo $IP > /tmp/old.ip
    /usr/local/bin/python /ect/ipcheck/ipcheck.py $OPTIONS $LOGIN $PASSWORD $HOST > /dev/null

    par

    echo `date` >> /tmp/ipcheck_log
    echo « —-update » >> /tmp/ipcheck_log
    echo $IP > /tmp/old.ip
    /usr/local/bin/python /ect/ipcheck/ipcheck.py $OPTIONS $LOGIN $PASSWORD $HOST > /dev/null

    • pazpop

      En effet, je n’avais pas vu cette coquille : Merci de l’avoir
      relevée et corrigée !

      • David Descamps

        Il y’a une autre coquille /ect/ au lieu de /etc/

        • pazpop

          Merci 🙂
          Je viens de faire la correction.

  • StanthewiZZard

    Le script ne fonctionne plus ?
    Perso ca ne fonctionne pas

    • pazpop

      Bonjour,

      Je n’ai plus d’IP dynamique depuis plusieurs mois alors je n’utilise plus ce script mais cela me surprend qu’il ne fonctionne plus.

      Tu as quoi comme erreur ?

      Cordialement,
      pazpop.

      • StanthewiZZard

        Aucune c’est bien la le soucis
        Je pense que deja ca ne parse pas bien le retour de checkdyns
        mais apres rien
        pas de maj et pourtant dans le log « update »

        Zarb

        • pazpop

          Il faudrait que je fasse de nouveaux tests pour comprendre où sa bloque mais je n’ai pas le temps en ce moment…

          L’URL http://checkip.dyndns.org te remonte bien ton IP ?

          Le script créer bien un fichier dans ton /temp ?

          La conf du fichier ipcheck.conf est correct ?

          • StanthewiZZard

            Merci pour ton aide
            j’ai trouvé une methode dérivée qui fonctionne bien

            🙂

          • pazpop

            Ah yes 🙂 cool que tu as pu trouver une alternative 😀
            Peux-tu, s’il te plait, partager ta solution ?
            Merci.

          • StanthewiZZard

            ouh la dans un commentaire pas facile

            je parametre tout comme toi

            je change dans le conf le host log pass (je crois que tu ne l’indique pas dans ton tuto et le conf prime sur le script)

            et surtout la modif qui tue:

            getip() {
            IP=`curl -sf http://checkip.dyndns.org/|cut -d ‘:’ -f 2|cut -d ‘<' -f1|sed -e 's/ //g'`
            OLDIP=`cat ./old.ip`
            }

          • pazpop

            En effet, je n’ai pas parlé du fichier ipcheck.conf mais il est relativement simple à configurer.

            ha yes 🙂 mon script ne devait pas récuperer l’IP correctement 🙂
            Merci pour ton partage de solution.
            Bonne continuation 🙂

          • StanthewiZZard

            yep 🙂

          • Soywod

            Sinon vous avez `curl ipogre.com` qui donne directement l’ip, pas besoin de cut derrière. Je l’utilise depuis un moment j’ai jamais eu de soucis

  • Alec Eiffel

    Pour l’ip il vaut mieux utiliser curlmyip :

    IP=`curl -s http://curlmyip.com`

    Il serait préférable de placer le script dans /usr/local/bin, /etc n’est réservé qu’aux fichiers de config. Idem pour les logs elles devraient aller dans /var/log/

    Et il faudrait également ajouter une vérification sur les chemins des applis.

    • pazpop

      En effet, je pense que ma solution est largement optimisable… car quand je l’ai mis en place j’étais pressé par le temps 🙂

      Merci en tout cas pour avoir proposé cette optimisation.

  • Alec Eiffel

    En fait j’ai même découvert qu’on peut se passer de ipcheck (et python) en n’utilisant finalement que curl, ma solution sur mon blog : http://drupal.briat.org/script-de-mise-a-jour-pour-le-dyndns-ovh

    • pazpop

      Merci d’avoir partagé ta solution 🙂

  • Smith

    Hum … Pour une raison inconnue le fichier n’actualise pas l’ip, malgré le fait que j’ai le bon login & mot de passe, le bon hostname … Et je ne trouve pas le long d’erreur … Des idées ? :/ (très bon auto sinon :). )

    • pazpop

      Bonjour Smith,

      Je t’invite à lire les commentaires de cet article. Certaines personnes ont eu ce problème.

      Il semblerait que mon script ne fonctionne pas par tout.

      Sinon, je pense que tu peux utiliser le script d’Alec Eiffel qui est disponible sur son site : http://drupal.briat.org/script-de-mise-a-jour-pour-le-dyndns-ovh

      Je pense que la chaine ci-dessous doit avoir une erreur :
      IP=`/usr/local/bin/curl http://checkip.dyndns.org 2>/dev/null | sed -nre ‘s/^.* (([0-9]{1,3}.){3}[0-9]{1,3}).*$/1/p’`

      J’espère avoir pu répondre à ta/tes questions.

      Cordialement,
      PAZ.

  • Soywod

    Merci pour l’article !
    Je rajouterais pour ma part le chemin vers curl dans une variable au lieu de l’utiliser en dur (l’emplacement peut varier d’un OS à l’autre). Faire un truc du genre curl = $(which curl) au début. Ça permettrait également de vérifier la présence de curl avant de démarrer le script (avec un if [ -z « $curl » ] …)

    • pazpop

      Salut Soywod,

      Merci pour ton retour. En effet, c’est plus propre 🙂
      Il faudrait que je m’êtes à jours mon article.

      Bonne journée,
      ++