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
In reply to Re: MAC Address of An Interface
by tachyon
in thread MAC Address of An Interface
by amt
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |