Bonjour,

Je suis sous Mac osx et je cherche a obtenir l adresse Mac de mes interfaces. En cherchant sur cpan j'ai trouve les 2 modules suivant : Net::Interface et IO::Interface.

Cependant je me retrouve confronte a quelques problemes :
  • Net::Interface : Aucun probleme lors de l installation tout se passe bien cependant lors de l execution de ce simple code :
    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
     
    use IO::Interface::Simple;                                                                                                                         
     
    print "IO::Interface \n";                                                                                                                          
    print "---------------\n";                                                                                                                         
     
    my @interfaces = IO::Interface::Simple->interfaces;                                                                                                
     
    for my $if (@interfaces) {                                                                                                                         
        print "interface = ", $if->name,"\n";                                                                                                          
        print "addr      = ", $if->address,"\n";                                                                                                       
        print "broadcast = ",$if->broadcast,"\n";                                                                                                      
        print "netmask   = ",$if->netmask,"\n";                                                                                                        
        print "hwaddr =    ",$if->hwaddr,"\n";                                                                                                         
    }
    je me retourve avec le resultat suivant :
    .....
    addr = 129.1.2.245
    broadcast = 129.1.2.255
    netmask = 255.255.255.0
    hwaddr =
    .....
    On remarquera que hwaddr est vide ...
  • j essaye alors le module Net::Interface, la deja a l installation je me trouve avec des erreurs lors des testes :
    Running make test
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
    t/if.............dubious
    Test returned status 0 (wstat 10, 0xa)
    DIED. FAILED tests 6-7
    Failed 2/7 tests, 71.43% okay
    t/mac_bin2hex....ok
    Failed Test Stat Wstat Total Fail Failed List of Failed
    -------------------------------------------------------------------------------
    t/if.t 0 10 7 4 57.14% 6-7
    Failed 1/2 test scripts, 50.00% okay. 2/9 subtests failed, 77.78% okay.
    make: *** [test_dynamic] Error 2
    /usr/bin/make test -- NOT OK
    je procede alors a un force install et essaye d executer le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    use Net::Interface;                                                                                                                                
     
    @all_ifs = Net::Interface->interfaces();                                                                                                           
     
    print "Net::Interface \n";                                                                                                                         
    print "---------------\n";                                                                                                                         
     
    foreach my $if (@all_ifs) {                                                                                                                        
        print "interface =", $if->name,"\n";                                                                                                           
        my $hexstring = $if->hwaddress;                                                                                                                
        print "hwaddr = ", $hexstring , "\n";                                                                                                          
    }
    et j obtiens alors un resultat qui est proche du rien :
    interface =stf0
    hwaddr =
    interface =
    hwaddr =
    interface =???


Donc voila, que se passe t il avec ces 2 modules, me suis je trompe dans le code ? dans le cas contraire ou chercher pour les faire fonctionner ? mis a pars dans le code source ce que j ai essayer de faire ....

Et pour tous ceux qui aurai la bonne idee de me conseiller de parser le resultat d "ifconfig" j essaye justement d utiliser des modules pour ne pas avoir a faire cela car le code final fonctionnera sur differents os.

Merci ,

PS : ca fait 3 semaines que je me suis mis au perl alors si j ai des erreurs dans le code alors Mea culpa mais bon je me suis base sur les exemples de CPAN.