#1 Le 20/02/2015, à 11:32
- debmac
M.A.J. facile de l'IP nom de domaine Gandi avec gandyn et Livebox play
Bonjour à tous,
Comment récupérer l'IP dynamique dans sa LIVEBOX PLAY (3) et réaliser une routine avec gandyn et une tâche cron ,réponse ci-dessous...
Orange avec la Livebox Play nous délivre une adresse IP Dynamique qui change en début de semaine d’où la difficulté de maintenir constamment à jour l'IP lors de la redirection de son nom de domaine chez Gandi.
LES INGRÉDIENTS:
La Livebox Play (3ème génération)
Gandi nous offre une API qui permet de mettre à jour son IP.
Gandyn est un script Python qui réalise un dialogue d'échanges entre XML-RPC de l'Api Gandi et un Serveur,Nas ,PC,etc...
Le script Gandyn a été écrit par Charly Caulet dont l'url est: https://githun/b.com/Chralu/gandy
À la suite d'un premier script python écrit ici: http://gerard.geekandfree.org/blog/2012 … -de-gandi/
Lorsque vous avez un Serveur,c'est mon cas (Debian Wheezy et OpenMediaVault) et que vous portez un intérêt particulier à la sécurité,ce script va vous posez un problème important !
C'est adapter.py situé dans le répertoire ipretriever, qui va collecter votre IP dynamique à cette url : http://ipecho.net/plain , sur un serveur c'est une porte non sécurisée ouverte sur la toile selon la fréquence éditée dans le fichier crontab.
La solution pour que gandyn s'exécute en interne c'est Benoît Meunier qui nous la donne !
Son site : https://deftcode.eu/wiki/public/documen … nux/dyndns
Benoît Meunier a modifié le script gandyn.py, supprimé le répertoire ipretriever avec son script adapter.py ,remplacé celui-ci par un deuxième script,getLB3WanIP.py qui permet de récupérer son IP dynamique directement dans sa Livebox play, ça c'est très cool merci…
Il manque les fichiers setup.py et gandyn.conf qu'il faudra modifier,très facile à réaliser, et qui seront édités un peu plus bas sur cette page.
Voici l’ensemble des opérations ,en espérant que celles-ci soient compréhensibles de tous.
J'ai réalisé ce test d'installation sur mon PC de bureau équipé de Ubuntu LTS 14.04
Python 3.4 est installé d'office sur Ubuntu LTS.
Télécharger les deux fichiers python gandyn.py et getLB3WanIP.py sur le site de B.Meunier à l'adresse citée ci-dessus ,au passage un peu de lecture ce n'est pas perdre son temps !
Modifier l’entête des deux scripts selon la version de python3 installée sur votre machine,ici pour l'exemple python3.4 .
GetLB3WanIP.py :
Sur la ligne 17 ,supprimer + passwd si vous ne voulez pas avoir une erreur du genre bad livebox….
Puis insérer après le signe = le mot de passe de son interface admin Livebox play .
Exemple:
urlAuth = 'http://192.168.1.1/authenticate?username=admin&password=' + passwd
devient :
urlAuth = 'http://192.168.1.1/authenticate?username=admin&password=mon_password'
Créer un fichier <setup.py> avec votre éditeur préféré ,insérer les lignes ci-dessous.
#!/usr/bin/env python3.4
from distutils.core import setup
setup(name='gandyn',
version='0.1b',
description='Dynamic record update client for the Gandy DNS service.',
author='inconnu',
author_email='inconnu',
url='inconnu',
scripts=['gandyn.py', 'getLB3WanIP.py'],
)
Installer gandyn.py & getLB3WanIP.py (comme dit plus haut,j'utilise Ubuntu,en mode graphique,il faut adapter toutes les commandes en fonction de votre Système.)
sudo python3.4 setup.py install
Le résultat de la commande si tout se passe bien est:
running install
running build
running build_scripts
creating build
creating build/scripts-3.4
copying and adjusting gandyn.py -> build/scripts-3.4
copying and adjusting getLB3WanIP.py -> build/scripts-3.4
changing mode of build/scripts-3.4/gandyn.py from 644 to 755
changing mode of build/scripts-3.4/getLB3WanIP.py from 644 to 755
running install_scripts
copying build/scripts-3.4/gandyn.py -> /usr/local/bin
copying build/scripts-3.4/getLB3WanIP.py -> /usr/local/bin
changing mode of /usr/local/bin/gandyn.py to 755
changing mode of /usr/local/bin/getLB3WanIP.py to 755
running install_egg_info
Writing /usr/local/lib/python3.4/dist-packages/gandyn-0.1b.egg-info
Ajouter les droits d’exécution pour gandyn.py & wetLB3WanIP.py
sudo chmod +x /usr/local/bin/gandyn.py getLB3WanIP.py
Tester la récupération de l'IP sur la Livebox Play,vous pouvez taper soit admin ou votre mot de passe,les deux fonctionnent.
La commande est :
getLB3WanIP.py admin
Le résultat : L' IP dynamique de la Livebox Play doit s'afficher.
xxx.xxx.xxx.xxx
Créer un fichier de configuration <gandyn.conf> et insérer dedans les lignes suivantes:
#Récupération de l'IP dynamique directement dans la Livebox play
LIVEBOXPW = 'admin'
urlWanIP = 'http://192.168.1.1/sysbus/NeMo/Intf/data:luckyAddrAddress'
#Le Nom du domaine qui doit être mis à jour
DOMAIN_NAME = 'mon_domaine.com'
#La clé API de production généré par Gandi pour mon_domaine.com
API_KEY = 'La clé API production du domaine'
#l'intervalle de temps entre deux exécutions de la tâche cron ,récupération et mise à jour IP de la Livebox à API Gandi (ci-dessous 300 est une valeur en seconde soit 5mn,n'est actif que si une tâche cron est éditée.
TTL = 300
#Filtres utilisés pour l'enregistrement à mettre à jour.
#Par défaut,la valeur mise à jour est « @ A xxx.xxx.xxx.xxx »
#Où 'xxx.xxx.xxx.xxx' est la valeur actualisée
RECORD = {'type':'A', 'name':'@'}
#Log level du script.Les valeurs sont :
# logging.DEBUG
# logging.INFO
# logging.WARNING
# logging.ERROR
# logging.CRITICAL
LOG_LEVEL = logging.DEBUG
#Chemin du fichier journal Gandyn <Le chemin que vous avez envie de spécifier,dans l'exemple /usr/local/etc/gandyn.log>
LOG_FILE = '/usr/local/etc/gandyn.log'
Placer le fichier <gandyn.conf> dans un répertoire de préférence à l'abri des regards indiscrets,dans l'exemple ce sera :
sudo mv ~/gandyn.conf /usr/local/etc/gandyn.conf #pour vous ce sera <Le chemin ou se trouve le fichier> vers <le chemin que vous avez envie de spécifier>
Tester Gandyn.py ,dans l'exemple avec sudo et le chemin c'est celui que j'ai spécifié,le votre sera peut être différent.
La commande est :
sudo /usr/local/bin/gandyn.py --config /usr/local/etc/gandyn.conf
Le résultat est dans le fichier <gandyn.log> à l'emplacement que vous avez spécifié dans le fichier <gandyn.conf> pour l'exemple ce sera : /usr/local/etc/gandyn.log
Si tout a bien fonctionné vous devriez avoir les lignes suivantes dans ce fichier, l'exemple ici une IP représentée par des X est inchangée.
Fri, 20 Feb 2015 06:36:45 DEBUG DNS record IP address : xxx.xxx.xxx.xxx
Fri, 20 Feb 2015 06:36:45 DEBUG Current public IP address :xxx.xxx.xxx.xxx
Fri, 20 Feb 2015 06:36:45 DEBUG Public IP address unchanged. Nothing to do.
Créer une tâche cron pour mettre tout ça en auto.
Pour obtenir une exécution toutes les 5mn de gandyn.py,ajouterla ligne ci-dessous au fichier crontab (/etc/crontab)
Attention au chemin que vous avez spécifié,éditez le fichier,dans l'exemple avec Ubuntu,ce se sera:
sudo gedit /etc/crontab
Rajouter cette ligne:
*/5 * * * * root /usr/local/bin/gandyn.py --config /usr/local/etc/gandyn.conf
Activer la tâche en relançant cron
Notes complémentaires :
L'installation est donnée ici à titre d'exemple sur un pc équipée de Ubuntu LTS 14.04,il est évident que sur un Serveur,c'est en console que se déroulera l'installation .
Il est important que les fichiers soient sécurisés,accessibles que par root,voir chiffrés avec mdp,il ne faut pas oublier qu'il y a des données importantes mais c'est un autre sujet…
Le mot de passe de la Livebox n'est pas remplacé,c'est getLB3WanIP encapsulé par gandyn.py qui permet l'utilisation de admin.
Remerciements :
- À Ubuntu.
- À Gerard.
- À C.Caulet.
- À B.Meunier.
Édit modération : merci d’utiliser les balises (code, url) pour améliorer la lisibilité de ton message.
Dernière modification par Ayral (Le 21/02/2015, à 12:02)
Hors ligne