IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Récupérer son @IP


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Par défaut Récupérer son @IP
    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!

  2. #2
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    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 ...

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Par défaut
    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

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    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

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Par défaut
    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];

  6. #6
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    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 ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $info=gethost ("$nom");
    pour y mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom = "le_nom_de_ma_machine";
    La résolution d'adresse se fera alors sur le nom que tu auras fournit, et pas sur le nom identifié pour la machine ...

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Par défaut
    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...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Récupérer son adresse IP sur Internet
    Par Thomas Lebrun dans le forum Windows Forms
    Réponses: 11
    Dernier message: 28/07/2014, 16h19
  2. Réponses: 5
    Dernier message: 31/05/2006, 19h30
  3. récupérer son adresse ip
    Par sendouda dans le forum MFC
    Réponses: 1
    Dernier message: 16/05/2006, 12h55
  4. <object> : récupérer son parent / changer son contenu
    Par benj63 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/05/2006, 18h24
  5. Réponses: 7
    Dernier message: 08/03/2006, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo