Bonjour,
j'aimerais savoir comment faire pour connaitre son adresse IP dans un script Perl. Il serait préférable que ça marche qussi bien sous Windows que ss Linux.
merci.
Bonjour,
j'aimerais savoir comment faire pour connaitre son adresse IP dans un script Perl. Il serait préférable que ça marche qussi bien sous Windows que ss Linux.
merci.
S'agit il de connaître son adresse IP locale, celle du poste, à l'intérieur d'un réseau, qu'il soit public ou privé, ou bien au contraire, de connaître l'IP publique sous laquelle apparaît un poste appartenant à un réseau privé.
En d'autres termes, veux tu connaître l'IP du poste sur lequel le script tourne, ou bien l'IP attribuée par un FAI et derrière laquelle se cache tout un sous-réseau ?
Ce code récupère l'adresse de la machine. Je ne l'ai pas testé sous Windows, mais j'ai relativement confiance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #!/usr/bin/perl use warnings; use strict; use Net::Domain qw(&hostname); my $nom=hostname (); use Net::hostent; my $info=gethost ("$nom"); my @bin_ip=split(//, $info->[4]->[0]); my @ip; push (@ip, unpack ("C", $_)) foreach (@bin_ip); print "Machine : $nom --> addr : $ip[0].$ip[1].$ip[2].$ip[3]\n";
Pour trouver l'IP attribuée par un FAI, on peut consulter un site public nous affichant notre adresse publique :
Ceci devrait être parfaitement portable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #!/usr/bin/perl use warnings; use string; use LWP::Simple; my $page=get("http://www.adresseip.com/"); if ($page=~m/(\d+\.\d+\.\d+\.\d+)/) { print "Mon adresse est $1\n"; }
Cependant, la qualité du résultat dépend d'un site externe.
Dans le cas d'un SOHO (Small Office Home Office), il est possible d'interroger l'interface web d'un éventuel routeur/firewall pour obtenir cette information de manière plus sûre et plus rapide. La requête est alors à adapter pour tenir compte de l'authentification nécessaire.
Merci pour ta réponse.
A vrai dire, je ne sais pas de quelle adresse j'ai besoin
Je dois programmer un client FTP et j'ai besoin d'envoyer l'adresse IP du client au serveur pour le mode actif.
Je ne sais donc pas si c'est l'adresse du poste ou celle du routeur (ip publique) que je dois envoyer.
J'imagine que ça serait plutot l'adresse publique du routeur pusque une adresse non routable ( 192.168.1.11 ) n'a aucun sens sur Internet. De l'autre coté, si j'envoi l'IP publique du routeur, ce dernier dernier devra faire du NAT pour rediriger les requetes vers la machine du client.
Je suis un peu perdu.
Après vérification, les deux scripts sont parfaitements portables. 8)
Epineuse question ...Envoyé par Tex-Twil
Le FTP en mode actif passe-t'il à travers les routeurs et du NAT ? J'ai un doute...
Il me semble avoir lu, il y a peu, un article dénonçant l'usage du NAT qui rend Internet "non-routable de bout en bout", et qui impose la traduction des adresses encapsulées dans la partie données des trames routées. Le FTP en mode actif tomberait alors dans ce genre de problème
Pour la suite de ton projet, peut être trouveras-tu des réponses sur le forum Développement réseaux.
merci.
j'ai regardé les commandes exécutées par un client ftp (Bullet Proof) et je remarque qu'il envoie l'adresse du post en mode actif : 192.168.1.11 !
Je ne comprends pas alors comment le serveur peut se connecter sur cette adresse.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager