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 :
je me retourve avec le resultat suivant :
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"; }
On remarquera que hwaddr est vide ........
addr = 129.1.2.245
broadcast = 129.1.2.255
netmask = 255.255.255.0
hwaddr =
.....- j essaye alors le module Net::Interface, la deja a l installation je me trouve avec des erreurs lors des testes :
je procede alors a un force install et essaye d executer le code suivant :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
et j obtiens alors un resultat qui est proche du rien :
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"; }
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.
Partager