Forum sur la Livebox de Wanadoo

AccueilAccueil  ­PortailPortail  ­FAQFAQ  ­RechercherRechercher  ­S'enregistrerS'enregistrer  ­MembresMembres  ­GroupesGroupes  ­ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 [Astuce] Script DynDns en PERL

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
AGusS
Invité



MessageSujet: [Astuce] Script DynDns en PERL   Dim 20 Mar 05 à 12:24

Salut,

J'ai créé un petit script en PERL pour récupérer l'adresse IP d'une Livebox Sagem. Je l'utilsie pour mettre à jour mon dns dynamique via le script ipcheck.py.

Voilà le code :


Code:

#!/usr/bin/perl -w
# Recup_ip version 1.0
# (c) Gregory Borysiak <gregory@borysiak.com>
# Sous licence GPL

#use Sys::Hostname;

my %ip = ();
my $count = 0;
my $cmd = "/usr/bin/wget --http-user=admin --http-passwd=XXXX http://192.168.5.1/wansetup.html -O - -o /dev/null |";

sub get_ip {
my $res = "";
open FILE, $cmd or die "impossible d'executer : $!";

while(my $ligne = <FILE> ) {
chop $ligne;
if( $ligne =~ /var Adrs_IP/ ) {
my @t = split ' ', $ligne;
$res = substr($t[3], 1, length($t[3]) - 3)
}
}
close FILE;
return($res);
}

my $res = get_ip();
print "$res\n";


Pensez à remplacer XXXX par le mot de passe de l'utilisateur admin.
Revenir en haut Aller en bas
mhep
Invité



MessageSujet: Re: [Astuce] Script DynDns en PERL   Mar 19 Juil 05 à 8:56

Bonjour,

J'ai testé le script mais j'ai eu comme réponse (après avoir inséré le password admin comme demandé) :
Code:
./ipcheck.py: line 9: syntax error near unexpected token `('
./ipcheck.py: line 9: `my %ip = ();'


Est-ce qu'il faut remplacer les parenthèses par une donnée ?
Merci pour tout conseil car je n'y connais rien en perl.

Marc
Revenir en haut Aller en bas
AGusS
Invité



MessageSujet: Re: [Astuce] Script DynDns en PERL   Mar 19 Juil 05 à 22:02

Bonsoir,

Je ne comprend pas l'erreur car le code que j'ai fourni fonctionne Hein4

Cela fonctionne avec une Livebox Sagem et un firmware < 240. Le script compatible 240 sera bientôt mis en ligne.

Essaye avec le code suivant qui commente la ligne ( qui d'ailleurs ne sert à rien ) :

Code:

#!/usr/bin/perl -w
# Recup_ip version 1.0
# (c) Gregory Borysiak <gregory@borysiak.com>
# Sous licence GPL

#use Sys::Hostname;

#my %ip = (); --  commenté
my $count = 0;
my $cmd = "/usr/bin/wget --http-user=admin --http-passwd=XXXX http://192.168.5.1/wansetup.html -O - -o /dev/null |";

sub get_ip {
my $res = "";
open FILE, $cmd or die "impossible d'executer : $!";

while(my $ligne = <FILE> ) {
chop $ligne;
if( $ligne =~ /var Adrs_IP/ ) {
my @t = split ' ', $ligne;
$res = substr($t[3], 1, length($t[3]) - 3)
}
}
close FILE;
return($res);
}

my $res = get_ip();
print "$res\n";


Ce script perl je l'ai appellé recup_ip.pl. Il peut être exécuté depuis le shell ainsi : $ perl -w recup_ip.pl

Je l'utilise avec un script Python disponible sur le site de Dyndns à cette URL : http://ipcheck.sourceforge.net/ipcheck.py

Pour terminer, j'ai créé un deuxième qui utilise les deux précédents :

Code:

#/bin/sh
# run_ipcheck 0.5 pour livebox Sagem
# Grégory Borysiak <gregory@borysiak.com>
# Basé sur un code trouvé sur la page de Funix (http://linuxfr.org/~Funix/15982.html )

# on récupère l'ip via l'interface web
IP=`/usr/local/sbin/recup_ip.pl`
#echo $IP

# on met à jour dyndns si besoin est

if [ -n "$IP" ]; then
  IPCHECK=`/usr/bin/python /usr/local/sbin/ipcheck.py -a $IP -d /usr/local/share/ipcheck USER PASSWORD SITE`
  RES=`echo $IPCHECK | grep successful`
  if [ -z "$RES" ]; then
    if [ -n "$IPCHECK" ]; then
        echo $IPCHECK
    fi
  fi
else
  echo "Pas d'adresse IP"
fi


Où USER est l'utilisateur Dyndns, PASSWORD le mot de passe et SITE le nom de domaine.
Revenir en haut Aller en bas
pierre60
Invité



MessageSujet: Re: [Astuce] Script DynDns en PERL   Mer 16 Nov 05 à 19:27

Bonjour,
j'utilise un nom de domaine dynamique via le service everydns.net, car la gestion dynamique de DNS est payante chez dyndns (je ne parle des sous-noms de domaines proposés).

Impossible donc d'utiliser la Livebox pour cette mise à jour, seul dyndns étant disponible.

J'ai donc adapté ce script pour l'utiliser avec ma version de Livebox (Sagem3202_24013A), et pour FreeBSD le meilleur OS du monde... Pardon Smile

Je pourrais mettre à jour mon adresse chez everydns toutes les minutes par exemple, mais je trouve plus propre (et plus rapide) de tester si l'adresse ip ne change pas localement, puis d'exécuter le script d'everydns si il y a un changement.

Voici donc la version modifiée du script :

Code:
#!/usr/bin/perl -w
# Recup_ip version 1.0
# (c) Gregory Borysiak <gregory@borysiak.com>
# Sous licence GPL

#use Sys::Hostname;

my %ip = ();
my $count = 0;
my $cmd = "/usr/local/bin/wget --http-user=admin --http-passwd=mot_de_passe http://192.168.1.1/internetservices.html -O - -o /dev/null |";

sub get_ip {
        my $res = "";
        open FILE, $cmd or die "impossible d'executer : $!";

        while(my $ligne = <FILE> ) {
                chop $ligne;
                if( $ligne =~ /var v_Adrs_IP/ ) {
                        my @t = split ' ', $ligne;
                        $res = substr($t[3], 1, length($t[3]) - 3)
                }
        }
        close FILE;
        return($res);
}

my $res = get_ip();
print "$res\n";


Les trois Modifications sont les suivantes :
- L'adresse de la page :
Code:
http://192.168.5.1/wansetup.html

qui devient :
Code:
http://192.168.1.1/internetservices.html


- La variable dans la page :
Code:
if( $ligne =~ /var Adrs_IP/ ) {

qui devient :
Code:
if( $ligne =~ /var v_Adrs_IP/ ) {


- Et le chemin de wget, qui devient sous FreeBSD :
Code:
/usr/local/bin/wget

Pour ceux qui utilisent Linux, deux solutions :
La première, qui est la plus simple, consiste à supprimer le système et le remplacer par FreeBSD.

La seconde, et là je vous préviens c'est tordu, limite bricolage :
Il faisser la ligne comme avant, soit :
Code:
/usr/bin/wget


Voilà, si ça peut aider quelqu'un Smile
Revenir en haut Aller en bas
 

[Astuce] Script DynDns en PERL

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum sur la Livebox de Wanadoo :: 
LES PROBLEMES
 :: Problèmes Logiciels :: Linux-Unix
-
Poster un nouveau sujet   Répondre au sujet