Lire l'ip sur dyndns

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

Messagepar carbone » 23 Sep 2003 15:06

ipcop 1.2 <BR>Mon problème: <BR>J ai un nom en dyndns, j ai mis en crontab le script qui vérifie toutes les heures que mon ip sur la machine n'a pas changé et si oui le mets à jour. Ce script, c est: /usr/local/bin/setddns.pl <BR>Le problème c'est que ce script stocke l'adrees préalablement mise dans dyndns, moi je voudrai qu'il vérifie sur le site si elle est bonne. <BR>Donc ma question, est comment récupérer cette ip? <BR>je pense qu'un ping de l'adresse devrait me donner ce que je cherche mais comment récupérer ca dans le script? je crois que c'est du perl <BR> <BR> <IMG SRC="images/smiles/icon_help.gif"> <IMG SRC="images/smiles/icon_help.gif">
Big Brother is watching you!
G. Orwell, 1984
Avatar de l’utilisateur
carbone
Contre-Amiral
Contre-Amiral
 
Messages: 490
Inscrit le: 11 Sep 2002 00:00
Localisation: Wavre (Be)

Messagepar Fesch » 23 Sep 2003 15:13

avec "ping tonnom.dyndns.org -c 1" <BR> <BR>et puis il faut lancer tout cela sur un grep, mais je ne sais comment cela fonctionne le grep <IMG SRC="images/smiles/icon_frown.gif">
Pourquoi lis-tu ceci???
Avatar de l’utilisateur
Fesch
Amiral
Amiral
 
Messages: 2505
Inscrit le: 11 Sep 2003 00:00
Localisation: Luxembourg

Messagepar jdh » 23 Sep 2003 15:14

Par exemple <BR> <BR>ip=`host xxxx.dyndns.org | awk '{print $4}'` <BR> <BR>
L'intelligence artificielle n'est rien à côté de la stupidité naturelle.
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar Fesch » 23 Sep 2003 15:20

mon ipcop ne connait pas " host", par contre <BR> <BR>ping xxx.dyndns.org -c 1 | head -n 1 | awk '{print $5}' <BR> <BR>fonctionne <IMG SRC="images/smiles/icon_smile.gif"> <IMG SRC="images/smiles/icon_smile.gif"> <IMG SRC="images/smiles/icon_smile.gif"> <BR> <BR>pour le script <BR> <BR>ip=`ping xxx.dyndns.org -c 1 | head -n 1 | awk '{print $5}' `
Pourquoi lis-tu ceci???
Avatar de l’utilisateur
Fesch
Amiral
Amiral
 
Messages: 2505
Inscrit le: 11 Sep 2003 00:00
Localisation: Luxembourg

Messagepar carbone » 23 Sep 2003 15:42

merci pour ces réponses mais ca marchera dans un scrip sh, pas un script perl je pense, or le script de mise à jour que je veux modifier, c'est du perl
Big Brother is watching you!
G. Orwell, 1984
Avatar de l’utilisateur
carbone
Contre-Amiral
Contre-Amiral
 
Messages: 490
Inscrit le: 11 Sep 2002 00:00
Localisation: Wavre (Be)

Messagepar Fesch » 23 Sep 2003 15:55

tu fais <BR> <BR>my $ip=`ping xxx.dyndns.org -c 1 | head -n 1 | awk '{print $5}' ` ; <BR> <BR>ou <BR> <BR>my $ip=qx(ping xxx.dyndns.org -c 1 | head -n 1 | awk '{print $5}' ); <BR> <BR> <BR><IMG SRC="images/smiles/icon_smile.gif"> <IMG SRC="images/smiles/icon_smile.gif">
Pourquoi lis-tu ceci???
Avatar de l’utilisateur
Fesch
Amiral
Amiral
 
Messages: 2505
Inscrit le: 11 Sep 2003 00:00
Localisation: Luxembourg

Messagepar carbone » 23 Sep 2003 16:15

merci de ta réponse mais apparement le résultat est pas encore ce que je recherche, si je fais ca et que j'imprime le résultat, j'ai: <BR>Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP <BR>PING xxx.dyndns.org (10.251.268.99) from 10.251.268.99 : 56(84) bytes of data. <BR> <BR>et pas 10.251.268.99 comme je le voudrai <IMG SRC="images/smiles/icon_frown.gif"> <BR> <BR>j ai tenté 2 méthode: <BR> <BR> <BR>#!/usr/bin/perl <BR> <BR>my @ip="ping xxx.dyndns.org -c1|head -n1|awk '{print $5}'" ; <BR>my $result = system(@ip); <BR>print($result); <BR> <BR>print ("n"); <BR>my $ip2=qx(ping xxx.dyndns.org -c 1|head -n1|awk '{print $5}'); <BR>print($ip2); <BR> <BR>mais ca ne change rien le résultat est le même dans les 2 et je ne comprends pas pourquoi <BR> <BR>_________________ <BR>Big Brother is watching you! <BR> G. Orwell, 1984 <BR><BR><BR><font size=-2></font>
Big Brother is watching you!
G. Orwell, 1984
Avatar de l’utilisateur
carbone
Contre-Amiral
Contre-Amiral
 
Messages: 490
Inscrit le: 11 Sep 2002 00:00
Localisation: Wavre (Be)

Messagepar Gesp » 23 Sep 2003 16:15

<!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-2>En réponse à:</font><HR></TD></TR><TR><TD><FONT SIZE=-2><BLOCKQUOTE>J ai un nom en dyndns, j ai mis en crontab le script qui vérifie toutes les heures que mon ip sur la machine n'a pas changé et si oui le mets à jour. </BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End --> <BR> <BR>setdynsdsn.pl porte bien son nom qui commence par set donc il est prévu pour mettre une valeur pas pour faire une vérification dont je ne comprends pas l'utilité. <BR> <BR>Normalement rc.updatered est lancé à chaque fois que l'adresse IP change, que ce soit en DHCP ou dans une session PPP. <BR>C'est rc.updatered qui lance setdynsdsn.pl et uniquement quand l'adresse IP a changé. <BR> <BR>La question est pourquoi tu veux lancer setdynsdns.pl en crontab?
Avatar de l’utilisateur
Gesp
Amiral
Amiral
 
Messages: 4481
Inscrit le: 29 Déc 2002 01:00

Messagepar carbone » 23 Sep 2003 16:21

mon problème vient du fait que l'adresse ip peut changer pour d'autres raisons, j'ai des clients dyndns qui tournent sur d'autres postes, parfois d'autres personnes se connectent sur le site et font une mise à jour manuel, ... <BR>Comme ici on est derriére un proxy, l adresse proposée sur le site dyndns n'est jamais la bonne, et donc les utilisateur qui ont accès au site (je ne peux pas changer ça) on déjà cliquer sur modifier! et comme l'ip stockée sur mon firewall ne change pas et bien tant que je n'ai pas fait un update forcé, ca ne fait pas de mise à jour car pour lui tout est toujours ok. <BR>Je voudrai donc qu'il vérifie l'adresse par rapport à la vrai, pas par rapport à son cache!
Big Brother is watching you!
G. Orwell, 1984
Avatar de l’utilisateur
carbone
Contre-Amiral
Contre-Amiral
 
Messages: 490
Inscrit le: 11 Sep 2002 00:00
Localisation: Wavre (Be)

Messagepar Fesch » 23 Sep 2003 16:36

bon, pour les commandes, fait comme suis. <BR> <BR>crée un fichier "getip" avec le contenu suivant: <BR>---| getip |--- <BR>ping sheherazade.dyndns.org -c1 | head -n 1 | awk '{print $5}' <BR>--------------- <BR> <BR>ensuite dans to script tu fais <BR> <BR>my @ip=`./getip`; <BR>print(@ip); <BR> <BR> <BR>ATTENTION: «`» = accent grâve !!! <BR> <BR>ou <BR> <BR>my @ip=qx(./getip); <BR>print(@ip); <BR> <BR>ATTENTION: pas de «'» ou «"» dans la commande qx !!! <BR>
Pourquoi lis-tu ceci???
Avatar de l’utilisateur
Fesch
Amiral
Amiral
 
Messages: 2505
Inscrit le: 11 Sep 2003 00:00
Localisation: Luxembourg

Messagepar tomtom » 23 Sep 2003 16:39

<!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-2>En réponse à:</font><HR></TD></TR><TR><TD><FONT SIZE=-2><BLOCKQUOTE> <BR>Le 2003-09-23 16:15, carbone a écrit: <BR>merci de ta réponse mais apparement le résultat est pas encore ce que je recherche, si je fais ca et que j'imprime le résultat, j'ai: <BR>Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP <BR>PING xxx.dyndns.org (10.251.268.99) from 10.251.268.99 : 56(84) bytes of data. <BR> <BR>et pas 10.251.268.99 comme je le voudrai <IMG SRC="images/smiles/icon_frown.gif"> <BR> <BR>j ai tenté 2 méthode: <BR> <BR> <BR>#!/usr/bin/perl <BR> <BR>my @ip="ping xxx.dyndns.org -c1|head -n1|awk '{print $5}'" ; <BR>my $result = system(@ip); <BR>print($result); <BR> <BR>print ("n"); <BR>my $ip2=qx(ping xxx.dyndns.org -c 1|head -n1|awk '{print $5}'); <BR>print($ip2); <BR> <BR>mais ca ne change rien le résultat est le même dans les 2 et je ne comprends pas pourquoi <BR> <BR>_________________ <BR>Big Brother is watching you! <BR> G. Orwell, 1984 <BR> <BR> <BR><font size=-2></font> <BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End --> <BR> <BR> <BR>ALors, deja, la premiere methode semble mieux, mais.... <BR> <BR>- pourquoi un @ pour la variable ? c'est pas mieux le $ ? <BR>- il faut mettre des backquotes pour encadrer la commande unix : ` <BR>- verifie ce que fais ta commande avant de taper.. le head -n 1 te donne la première ligne. Il serait peut-etre plus judiceieux de mettre un grep : <BR> <BR>my $ip=`ping xxx.dyndns.org -c1|grep PING|awk '{print $5}' ` <BR>print $ip <BR> <BR>Ca devrait fonctionner pas mal ! <BR> <BR>Il est important de coprendre ce qu'on tape un peu quand même ! <BR> <BR>t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar carbone » 24 Sep 2003 09:10

Ben si je pose la question c est justement pour apprendre. <BR>Mais bon, ça ne marche toujours pas, le awk ne renvoie pas la valeur de l argument dans ma variable <IMG SRC="images/smiles/icon_bawling.gif"> <BR>voila mon script: <BR> <BR>#!/usr/bin/perl <BR> <BR>my $ip=`ping xxxx.dyndns.org -c1|grep PING`; <BR>print ($ip); <BR> <BR>et le résultat: <BR>Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP <BR>PING sheherazade.dyndns.org (213.118.151.54) from 213.118.151.54 : 56(84) bytes of data. <BR> <BR>Bon la 1ere ligne ok, c est le message d ereur un close(STDERR); devrait je suppose le faire disparaître mais le contenu de $ip n est toujours pas bon <BR> <IMG SRC="images/smiles/icon_bawling.gif"> <BR>Je dois aussi essayer l autre solution qui consiste à mettre la ligne dans un fichier et alros de manipuler ce fichier
Big Brother is watching you!
G. Orwell, 1984
Avatar de l’utilisateur
carbone
Contre-Amiral
Contre-Amiral
 
Messages: 490
Inscrit le: 11 Sep 2002 00:00
Localisation: Wavre (Be)

Messagepar tomtom » 24 Sep 2003 10:19

donne deja le resultat de ping xxx.dyndns.org -c1 <BR> <BR>Ensuite on verra pour gfrepper.... <BR> <BR>t. <BR> <BR>
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar carbone » 24 Sep 2003 10:42

en fait j'ai comme conseiller par Fesch, j'ai créé un fichier getip (exécutable) contenant ma requète: <BR>ping xxx.dyndns.org -c1 | grep PING | awk '{print $3}' <BR> <BR>mais je prends le 3ème argument, pas le 5ème car il me faut l'ip renvoyée par Dyndns, pas la mienne. <BR> <BR>Puis j ai copié le fichier setddns.pl dans un fichier CheckDNS.pl que je lance Toutes les heures par crontab, et une fois par mois en forcé. <BR>J'ai alors modifié les lignes suivantes: <BR> <BR>my $ipcache = `./getip`; <BR>chomp $ipcache; <BR> <BR>.... <BR> <BR>my $ip = <IP>; <BR>chomp $ip; <BR>my $iptemp = "(".$ip.")"; <BR>chomp $iptemp; <BR> <BR>... <BR> <BR>if ($ARGV[0] eq '-f') <BR>{ <BR> $ipcache = 0; <BR> &log('ip forced'); <BR>} <BR> <BR>... <BR>if ($iptemp ne $ipcache) <BR>{ <BR>... <BR> <BR>Et alors je met $ip comme ip dans DYNDNS si il le faut <BR> <BR>Voila <IMG SRC="images/smiles/icon_smile.gif">
Big Brother is watching you!
G. Orwell, 1984
Avatar de l’utilisateur
carbone
Contre-Amiral
Contre-Amiral
 
Messages: 490
Inscrit le: 11 Sep 2002 00:00
Localisation: Wavre (Be)

Messagepar MasterSleepy » 24 Sep 2003 11:14

et nslookup [host] ce serait pas mieux qu'un ping ????
"Microsoft fera quelque chose qui ne plantera jamais quand ils commenceront à fabriquer des clous "
http://www.vanhees.cc
Avatar de l’utilisateur
MasterSleepy
Amiral
Amiral
 
Messages: 2625
Inscrit le: 24 Juil 2002 00:00
Localisation: Belgique

Suivant

Retour vers IPCop

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité