Script de maj d'ip dynamique en perl, erreur de syntaxe ?

Salut,

J’aimerai vous soumettre ces quelques lignes d’un script perl que j’ai pioché sur la toile, d’où il en ressort ces quelques erreurs, vraisemblablement sans trop de conséquences puisque qu’il fait son boulot, mais cela me chagrine un temps soit peu … :017

Son but; la mise à jour d’une ip dynamique
Le script étant consistant (938 lignes) je joins les lignes concernées.

En mode verbeux, option -w … sauf erreur de ma part!

#!/usr/bin/perl -w

Les erreurs, je crois … :12

[root@yunohost] ~ # perl /usr/bin/addns.pl "my" variable $server_host masks earlier declaration in same scope at /usr/bin/addns.pl line 200. "my" variable $msg masks earlier declaration in same scope at /usr/bin/addns.pl line 311. False [] range "\w-" in regex; marked by <-- HERE in m/\[([\w- <-- HERE \._]+?)\]\s*?\{(.*?)\}/ at /usr/bin/addns.pl line 459. Use of uninitialized value in string eq at /usr/bin/addns.pl line 863. webcheck: system type not specified, using default - "dyndns" webcheck: ip (x.x.x.x) already correct in database [root@yunohost] ~ #

ligne 200

my $server_host = $host_v{$curr_host}{'server_host'};

ligne 311

my $msg="";

ligne 459

[code]if($text =~ m/[([\w-._]+?)]\s*?{(.*?)}/gs) {

}[/code]

ligne 863

elsif ( $cmd_args{'update_host'}[0] eq "" &&

Erreur de syntaxe ???

Je connais pas Perl mais pour la première erreur il te dit que tu as déjà déclarer la variable. Du coup le “my” est il nécessaire ?
Idem pour la deuxième erreur

Pour la troisième je ne parle pas chinois :mrgreen: il faudrait se plonger dans le déchiffrage de l’expression régulière :033

Pour la dernière je dirais que “$cmd_args{‘update_host’}[0]” semble être un pointeur null. Essaye de le faire afficher juste avant ta condition pour voir ce qu’il contient.

Salut,

Merci Mimoza … :wink:

Rhôoo …

Pour résumer … c’est un script que j’ai trouvé sur la toile et je n’y connais strictement rien en perl et autre … je n’ai aucune connaissance en programmation … :blush:

Si pour toi il y a du Chinois, je te laisses aisément entrevoir ce qu’il en est pour ma pomme … :033

Salut,

Un coup de pouce sur ce coup, serait fort appréciable … :083

A défaut de pouvoir t’aider en perl, car je n’y connais rien, peut-être que je pourrais te fournir une info utile. Tout dépend ce que tu appelles “mettre à jour une ip dynamique”. Si il s’agit d’une entrée DNS, sache que l’API de Gandi ( si bien sûr ton domaine est chez eux ) permet de mettre à jour les ip dynamiques via un tout petit script python à lancer périodiquement via un crontab.

Cela fonctionne sans soucis chez moi :

gerard.geekandfree.org/blog/2012 … -de-gandi/

Salut,

Merci!

J’ai suivit tes conseilles Mimoza. :wink:

Il y a du mieux!

[root@yunohost] ~ # perl /usr/bin/addns.pl False [] range "\w-" in regex; marked by <-- HERE in m/\[([\w- <-- HERE \._]+?)\]\s*?\{(.*?)\}/ at /usr/bin/addns.pl line 462. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 312. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 351. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 352. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 353. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 357. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 358. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 359. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 363. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 364. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 365. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 369. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 370. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 371. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 376. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 377. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 378. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 381. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 382. Global symbol "$c_hostname" requires explicit package name at /usr/bin/addns.pl line 383. Execution of /usr/bin/addns.pl aborted due to compilation errors. [root@yunohost] ~ #

@arnaud_k

Mon “script” fonctionne plutôt bien, la MAJ de mon ip dynamique (Orange) et DNS chez Ovh, s’effectue sans aucun souci, mise à part ces nouvelles erreurs de syntaxes.

Un exemple, ligne 312.

$c_hostname=0; # Current Hostname / for multiple updates
Cinq doigts les amis … :wink:

Le premier lien de cette recherche devrais t’aider.

Donc mettre un “my” à la ligne 312

Salut,

Merci Mimoza ! :wink:

Malheureusement, je stagne! :mrgreen: :blush:

J’aurais très certainement dû, dès l’ouverture de se fil vous faire part des liens qui vont biens … :confused:

À la base.

wiki.yunohost.org/DynDNS_OVH/fr

Suivit du script.

wiki.nuxjack.net/index.php/Script_maj_dns_perl

Mes confuses!

Si cela vous parlent … :083

Gros morceau ton script, mais comme je te l’ai dit, je n’ai jamais fait de Perl donc je ne pas vraiment plus t’aider que ça.

Salut,

Je te remercie Mimoza :wink:

Un barbus finira bien par passer, ici, non … :083