Script pour recuperer l'adresse Ip

Le
Jean Louis Maurec
Bonjour,

Quelqu'un aurait un bout de code perl permettant de recuperer l'adresse IP
d'une machine en lui precisant l'interface ?

Jusqu'ici, tout les scripts que j'ai essaye de faire n'etait pas tres
fiable, il ne recuperait pas toujours l'ip (je sais pas pourquoi)

Merci d'avance
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Benoit Izac
Le #431987
Bonjour,

le 09/04/2004 à 18:36, Jean Louis Maurec a écrit
dans le message
Quelqu'un aurait un bout de code perl permettant de recuperer
l'adresse IP d'une machine en lui precisant l'interface ?

Jusqu'ici, tout les scripts que j'ai essaye de faire n'etait pas tres
fiable, il ne recuperait pas toujours l'ip (je sais pas pourquoi)


Difficile de faire quelque chose de portable. Sur GNU/Linux :

#!/usr/bin/perl -w
use strict;
my $cmd = "/sbin/ifconfig";
if (!@ARGV) {
print "usage: $0 if ...n";
exit(1);
}
foreach my $if (@ARGV) {
open(IF, '-|', "$cmd $if");
while (<IF>) {
chomp;
if (s/^s*inet addr:((?:d+.){3}d+)s+.*$/$1/) {
print "the interface $if has address: $_n";
}
}
close(IF);
}
__END__

--
Benoit Izac

DominiX
Le #431984
ici même:,
Benoit Izac
#!/usr/bin/perl -w
use strict;
my $cmd = "/sbin/ifconfig";


pour être standard mieux vaut écrire
my $cmd = "/sbin/ifconfig -a";

d'autre part il y a aussi
netstat -r ou netstat -i
qui est aussi tres repandu (win32) ou carrement
IO::Interface
ou bien
perl -MSocket -MSys::Hostname -e
'print inet_ntoa(scalar(gethostbyname($name)) || "localhost");'
ou encore
perl -MSys::HostIP -e 'print hostip'

--
dominix

DominiX
Le #431983
"DominiX" news:407741c1$0$22878$
ici même:,
Benoit Izac
#!/usr/bin/perl -w
use strict;
my $cmd = "/sbin/ifconfig";


pour être standard mieux vaut écrire
my $cmd = "/sbin/ifconfig -a";

d'autre part il y a aussi
netstat -r ou netstat -i
qui est aussi tres repandu (win32) ou carrement
IO::Interface
ou bien
perl -MSocket -MSys::Hostname -e
'print inet_ntoa(scalar(gethostbyname($name)) || "localhost");'


desolé, je voulais ecrire

perl -MSocket -MSys::Hostname -e
'print inet_ntoa(scalar(gethostbyname(hostname())) || "localhost");'
--
dominix





Benoit Izac
Le #431906
Bonjour,

le 10/04/2004 à 02:37, "DominiX" dans le message
pour être standard mieux vaut écrire
my $cmd = "/sbin/ifconfig -a";


standard par rapport à quoi ?

--
Benoit Izac

DominiX
Le #431905
ici même:,
Benoit Izac
Bonjour,

le 10/04/2004 à 02:37, "DominiX" dans le message
pour être standard mieux vaut écrire
my $cmd = "/sbin/ifconfig -a";


standard par rapport à quoi ?


unix compliant.
MacOsX, Solaris, QNX, *BSD,...

--
Dominix


Benoit Izac
Le #431904
Bonjour,

le 10/04/2004 à 11:41, "DominiX" dans le message
pour être standard mieux vaut écrire
my $cmd = "/sbin/ifconfig -a";


standard par rapport à quoi ?


unix compliant.
MacOsX, Solaris, QNX, *BSD,...


ifconfig n'est pas defini pas dans Single UNIX Specification v3, il n'y
a donc pas de raison d'être "unix compliant".
voir :
--
Benoit Izac



DominiX
Le #431816
ici même:,
Benoit Izac
Bonjour,

le 10/04/2004 à 11:41, "DominiX" dans le message
pour être standard mieux vaut écrire
my $cmd = "/sbin/ifconfig -a";


standard par rapport à quoi ?


unix compliant.
MacOsX, Solaris, QNX, *BSD,...


ifconfig n'est pas defini pas dans Single UNIX Specification v3, il
n'y a donc pas de raison d'être "unix compliant".
voir :

ca s'apelle un standart de fait.
sur la pluspart des systeme *nix si tu entre la commande ifconfig -a
tu obtient une liste des interfaces. il n'y a que sous linux que tu
aura cette meme reponse sans le "-a" faut pas chercher plus loin.

--
dominix




Benoit Izac
Le #431814
Bonjour,

le 10/04/2004 à 22:55, "DominiX" dans le message
ca s'apelle un standart de fait.
sur la pluspart des systeme *nix si tu entre la commande ifconfig -a
tu obtient une liste des interfaces. il n'y a que sous linux que tu
aura cette meme reponse sans le "-a" faut pas chercher plus loin.


Bien ; maintenant que tu as ton "standart de fait", execute mon script
avec et sans le `-a' sur un *BSD et dis moi si il fonctionne.

De plus mon script n'a pas besoin du `-a' car il ne cherche pas à lister
toutes les interfaces ; il répond simplement à la question de l'OP et
j'ai bien pris soin de préciser le contexte.

--
Benoit Izac

Laurent Wacrenier
Le #431813
DominiX
ca s'apelle un standart de fait.
sur la pluspart des systeme *nix si tu entre la commande ifconfig -a
tu obtient une liste des interfaces. il n'y a que sous linux que tu
aura cette meme reponse sans le "-a" faut pas chercher plus loin.


Plutôt un bi-standard de fait : il y aussi les systèmes où ça renvoie
"option inconnue" et qui réclament le nom d'une interface en argument
(ifconfig ne sait pas lister les interfaces).

Publicité
Poster une réponse
Anonyme