Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: MAC Address of An Interface

by tachyon (Chancellor)
on Sep 08, 2004 at 05:29 UTC ( #389278=note: print w/replies, xml ) Need Help??


in reply to MAC Address of An Interface

Did you say use Inline 'C'?

#!/usr/bin/perl use Inline 'C'; get_mac('eth0'); __END__ __C__ #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> void get_mac( char *iface ) { int s; struct ifreq buffer; memset(&buffer, 0x00, sizeof(buffer)); s = socket(PF_INET, SOCK_DGRAM, 0); strcpy(buffer.ifr_name, iface); ioctl(s, SIOCGIFHWADDR, &buffer); close(s); for( s = 0; s < 5; s++ ) printf("%.2X:", (unsigned char)buffer.ifr_hwaddr.sa_data[s]); printf("%.2X\n", (unsigned char)buffer.ifr_hwaddr.sa_data[s]); }

Easy to compile it into a command line C widget you call with backtics so you don't need Inline. Just drop the perl part, add int main(int argc,char *argv[]){get_mac(argv[1]);return 0;}, compile it and then call it from perl like $mac = `widget $iface`

cheers

tachyon

Replies are listed 'Best First'.
Re^2: MAC Address of An Interface
by amt (Monk) on Sep 08, 2004 at 12:52 UTC
    Thank you tachyon, it turns out that I will probably have to implement this application in C, for proprietary concerns.

    Thanks to all those who made suggestions.

    amt.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://389278]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2021-01-19 18:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?