랜포트별로 맥 어드레스를 구하고 싶습니다. 어떻게 하면 될까요?

역시 ifconfig의 결과에서 구하는 것이 가장 정확합니다.

ifconfig.png


정보가 너무 많죠? grep로 축소할 수 있습니다. 


]$ ifconfig eth1 | grep 'HWaddr'


처럼 말이죠. 자, 이 명령을 이용해서 HWaddr 문자열을 찾고 이후에 나오는 맥 어드레스를 구해 보겠습니다.

#define BUF_SIZE    1024

int main( void)
{
    FILE   *fp;
    char    buff[BUF_SIZE];
    char   *pos;

    fp = popen( "ifconfig eth1 | grep 'HWaddr'", "r");
    if ( NULL != fgets( buff, BUF_SIZE, fp)){
        pos = strstr( buff, "HWaddr");
        if ( NULL != pos){
            printf( "eth0 MAC Address is %s\n", pos+7);
        } else {
            printf( "eth0 is not valid.\n");
        }
    }
    else {
        printf( "MAC Address not found.\n");
    }
    pclose(fp);

    return 0;
}