http://qs1969.pair.com?node_id=145611


in reply to Accessing NIC/mac address ?

If you are running this on a *NIX based platform, you should look into the IO::Interface module - This module gives you access to a wealth of information about network interface configurations. For example, from the documentation ...

use IO::Socket; use IO::Interface qw(:flags); my $s = IO::Socket::INET->new(Proto => 'udp'); my @interfaces = $s->if_list; for my $f (@interfaces) { print "interface = $if\n"; my $flags = $s->if_flags($if); print "addr = ",$s->if_addr($if),"\n", "broadcast = ",$s->if_broadcast($if),"\n", "netmask = ",$s->if_netmask($if),"\n", "dstaddr = ",$s->if_dstaddr($if),"\n", "hwaddr = ",$s->if_hwaddr($if),"\n"; print "is running\n" if $flags & IFF_RUNNING; print "is broadcast\n" if $flags & IFF_BROADCAST; print "is p-to-p\n" if $flags & IFF_POINTOPOINT; print "is loopback\n" if $flags & IFF_LOOPBACK; print "is promiscuous\n" if $flags & IFF_PROMISC; print "is multicast\n" if $flags & IFF_MULTICAST; print "is notrailers\n" if $flags & IFF_NOTRAILERS; print "is noarp\n" if $flags & IFF_NOARP; }

If all that you are looking for is the MAC address of the interface card, then the $obj->if_hwaddr method is all you will need to worry about.

 

perl -e 's&&rob@cowsnet.com.au&&&split/[@.]/&&s&.com.&_&&&print'

Replies are listed 'Best First'.
Thanks ! Re: Re: Accessing NIC/mac address ?
by peterg22 (Novice) on Feb 15, 2002 at 12:42 UTC
    Yep, this works really well, so I will be able to start coding. Thanks to everyone that offered suggestions. I didn't want to use an external program unless there was no other way. I'll post a snippet when I have something finished.
    There is a small typo though -

    for my $f (@interfaces) {
    should be:
    for my $if (@interfaces) {
    otherwise nothing prints out..

    Mildew Hall.. Home of PurePostPro and other Perl goodies!
    Not only oysters create Pe[a]rls