c

리눅스 IP충돌 체크

afewgood 2022. 9. 8. 09:21

int ip_conflict_check(char *device, char *ip)
{
    FILE *fp;
    char cmd[64], buf[128];

    memset(cmd, 0x00, sizeof(cmd));
    sprintf(cmd, "arping -q -D -I %s -c 1 %s; echo $?", device, ip);
    if((fp=popen(cmd, "r")) == NULL)
    {
        perror("popen() Fail");
        return -1;
    }

    memset(buf, 0x00, sizeof(buf));
    while(1)
    {
        if(fgets(buf, sizeof(buf), fp) == NULL) break;
    }
    pclose(fp);

    return buf[0]-0x30;
}

int main(void)
{
    char *device="eth0"; //"wlan0" //Network (Ethernet or WiFi) Interface Device
    char *ip="192.168.0.254"; //체크하고자 하는 IP

    ip_conflict_check(device, ip);
}