Bonjour,
Je souhaite en Perl récupérer mon @IP.. j'ai essayé ENV{SERV_ADDR} ou quelque chose comme ça mais j'obtiens 127.0.0.1...
Je voudrai l'@IP en réseau que j'ai... (du style 192.168.X.Y).
Est ce que qqn pourrait m'aider?
Merci d'avance!
Bonjour,
Je souhaite en Perl récupérer mon @IP.. j'ai essayé ENV{SERV_ADDR} ou quelque chose comme ça mais j'obtiens 127.0.0.1...
Je voudrai l'@IP en réseau que j'ai... (du style 192.168.X.Y).
Est ce que qqn pourrait m'aider?
Merci d'avance!
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #!/usr/bin/perl use warnings; use strict; # Script de verification des adresses IP (13-Jan-2006) # Verification de l'adresse privee use Net::Domain qw(&hostname); use Net::hostent; my $nom=hostname (); my $info=gethost ("$nom"); my @bin_ip=split(//, $info->[4]->[0]); my @ip; push (@ip, unpack ("C", $_)) foreach (@bin_ip); print "IP Privee Machine : $nom --> addr : $ip[0].$ip[1].$ip[2].$ip[3]\n"; # Verification de l'adresse publique (patte externe du FW ou du routeur NAT) use LWP::Simple; # Repose sur un service exterieur # A changer en cas d'indisponibilite ! my $page=get("http://www.adresseip.com/"); if ($page=~m/(\d+\.\d+\.\d+\.\d+)/) { print "IP Publique (patte externe) : $1\n"; }
Et c'est portable Windows/Linux.
Ca fournit aussi bien l'IP privée que l'IP publique 8)
Mais ça repose sur un service externe pour connaître l'IP publique ...
IP Privee Machine : localhost --> addr : 127.0.0.1 IP Publique (patte externe) : 62.212.105.148
En fait, c'est la 3ème adresse que je voudrai avoir...
Je m'explique : mon poste est ds un réseau privé d'entreprise (@IP en 192.168.X.Y / 24) et c'est cette adresse ds mon réseau privé que je souhaite obtenir..
L'IP publique que j'obtiens par ton script est celle de mon Firewall, effectivement comme indiqué dans ton script "patte externe du FW ou du routeur NAT", après le NAT donc...
QQn a une idée?
Merci d'avance![]()
si ca peut servir, je l'ai vu passer sur la mailing-list perl :
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /sbin/ifconfig | perl -nle '/^eth\d+:\d+/&&push@l,$&}{print"@l"'
Mr6
Malheureusement (honte sur moi..), je suis ss WINDOWS XP...
EDIT: haha, je me suis inspiré de l'idée ifconfig pour faire la même version WIN32 et IPCONFIG :
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
16
17
18
19
20 # Generate the IP#, router, and subnet mask by running the "ipconfig" command. # Run ipconfig and dump its contents to ipdump. open(IPNUM,"|ipconfig > ipdump") || die "Can't run 'ipconfig'...$!\n"; close(IPNUM); # Open the dump file open(IPNUM,"ipdump") || die "Can't open ipdump...$!\n"; # Parse out the lines with ip numbers while ( <IPNUM> ) { chomp; if ( $_ =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/) { push(@ipconf,split(/\D+/,$_)); } } $IPAdws2 = "$ipconf[1]." . "$ipconf[2]." . "$ipconf[3]." . $ipconf[4]; $SubnetMsk2 = "$ipconf[6]." . "$ipconf[7]." . "$ipconf[8]." . $ipconf[9]; $Router2 = "$ipconf[11]." . "$ipconf[12]." . "$ipconf[13]." .$ipconf[14];
Je crois qu'il doit y avoir un petit accroc dans la configuration réseau de ta machine.
En effet, les noms localhost et les adresses 127.0.0.1 arrivent généralement en dernier dans les config réseau habituelles. Le fait que tu les aie en premier n'est pas idéal et aurait tendance à me faire croire qu'il y a un problème dans ton attribution de nom/adresse de machine.
En effet, j'ai toute confiance dans ce script qui m'a déjà fournit des informations fiables sous environnement windows
Tu peux essayer de modifier le script avant la lignepour y mettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part my $info=gethost ("$nom");La résolution d'adresse se fera alors sur le nom que tu auras fournit, et pas sur le nom identifié pour la machine ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part $nom = "le_nom_de_ma_machine";
Effectivement, tu as raison. QUand je mets mon nom de machine, j'obtiens bien l'@IP qui va bien. Et dans ton premier code, $nom contenait bien "localhost" et ma config réseau arrive derrière...
Qu'entends tu par "problème dans l'attribution de nom/adresse de machine"? Mis à part le fait que cela soit inversé, je n'ai pas encore rencontré de problème...
Partager