perl如何获取本机MAC地址,Net::Libnet安装报错

perl如何获取本机MAC地址,Net::Libnet安装报错

XP平台 notebook编辑   perl5.8

获取主机名和IP可以用模块Net::Hostname   Net::HostIP   ,但是如何获取MAC地址呢? 用`ipconfig/all`,再摘取数据貌似不雅。CPAN查到一个模块Net::Libnet,但是死活装不上去,错误提示如下:

QUOTE:
F:\perl_modle\Net-Libnet-0.01_04>nmake

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

        cl -c  -I.  -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO
_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_I
NC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFI
X -MD -Zi -DNDEBUG -O1    -DVERSION=\"0.01_04\"  -DXS_VERSION=\"0.01_04\"  "-IC:
\Perl\lib\CORE"   Libnet.c
'cl' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code '0x1'
Stop.

请教,如何解决?有更好的模块吗?多谢!

Hello,

under Windows you can use Win32 modules to access information
about MAC address.
Sample code:

[Copy to clipboard] [ - ]
CODE:
use strict;
use  warnings;
use Win32::OLE qw(in);
use Win32::OLE::Variant;


my $wmi_object ='winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2';
my $objWMIService = Win32::OLE->GetObject($wmi_object);
my $wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True';
my $nics = $objWMIService->ExecQuery($wql);

my $cnt = 1;
print "=" x 60, "\n";
foreach my $nic (in $nics) {
    print "Network Interface Card: $cnt\n";
    print '  Description: ' . $nic->Description, "\n";
    print '  Physical (MAC) address: ' . $nic->MACAddress, "\n";
    print '  Host name:              ' . $nic->DNSHostName, "\n";

    # display all IP addresses configured for this adapter
    if (!!($nic->IPAddress)) {
        for my $x (0 .. $#{$nic->IPAddress}) {
            print '  IP address:             ' . $nic->IPAddress($x), "\n";
        }
    }

    if (!!($nic->IPSubnet)) {
        for my $x (0 .. $#{$nic->IPSubnet}) {
            print '  Subnet:                 ' . $nic->IPSubnet($x), "\n";
        }
    }

    if (!!($nic->DefaultIPGateway)) {
        for my $x (0 .. $#{$nic->DefaultIPGateway}) {
            print '  Default gateway:        ' . $nic->DefaultIPGateway($x), "\n";
        }
    }
    $cnt++;
    print "=" x 60, "\n";
}

Thanks for ulmer
我发现好多人喜欢自己编译模块安装,但是事实上连自己有没有编译器都不知道。