#!/usr/bin/perl use Inline 'C'; get_mac('eth0'); __END__ __C__ #include #include #include 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]); }