//ip_conflict_check.sh
Start ========================================
#!/bin/sh
#arping -q -D -I DEVICE -c COUNT IP_ADDRESS; echo $?
#ex) arping -q -D -I eth0 -c 1 192.168.0.181; echo $?
#리턴값이 1 이면 이미 네트워크상에 IP가 존재 / 0 이면 중복 IP 없음

out="ip_check_ret.txt"
touch "$out"

arping -q -D -I eth0 -c 1 "$1"

ret=$?
echo "$ret" > "$out"
End ==========================================

실행방법
[root@afewgood /home ~]$ ./ip_conflict_check.sh 192.168.0.254
[root@afewgood /home ~]$  cat ip_check_ret.txt
1    //IP 존재함
[root@afewgood /home ~]$ 

Posted by afewgood
,

#include <regex.h>
int Check_IP_Addr(char *addr)
{
    regex_t state;
    const char *pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";

    regcomp(&state, pattern, REG_EXTENDED);
    //0=success else=fail
    return regexec(&state, addr, 0, NULL, 0);
}

int Check_Email_Addr(char *addr)
{
    regex_t state;
    const char *pattern="^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$";

    regcomp(&state, pattern, REG_EXTENDED);
    //0=success else=fail
    return regexec(&state, addr, 0, NULL, 0);
}

int main(void)
{
    int i, ret;
    char *ip[]={"192.168.0.24", "192.168.0.753", "192.168.0.1"};
    char *email[]={"afewgood@afewgood.net", "example@test.com", "nonmail"};

    for(i=0; i<3; i++)
    {
        ret = Check_IP_Addr(ip[i]);
        if(ret != 0)    printf("[%d] Incorrect IP address\n", i);

        ret = Check_Email_Addr(email[i]);
        if(ret != 0)    printf("[%d] Incorrect Email Address\n", i);
    }
}

결과
[1] Incorrect IP address
[2] Incorrect Email Address

'c' 카테고리의 다른 글

log파일 만들기 source  (0) 2023.02.07
리눅스 IP충돌 체크  (0) 2022.09.08
구조체 배열 인자로 넘겨서 채우기  (0) 2022.08.11
리눅스 usb mount 예제  (0) 2021.07.20
ASCII & 한글 완성형(KSC5601) 출력 소스  (0) 2021.07.08
Posted by afewgood
,

typedef struct _tagTestStruct {
    int x;
    int y;
} testStruct;

void AddStructure(testStruct structArray[], int *count)
{
    testStruct sample;

    memset(&sample, 0x00, sizeof(testStruct));
    sample.x = 5;
    sample.y = 50;

    memcpy(&structArray[*count], &sample, sizeof(testStruct));
    (*count)++;
}

int main(void)
{
    int cnt=0, i;
    testStruct structArr[4];

    memset(&structArr, 0x00, sizeof(structArr));
    for(cnt=0; cnt<2; cnt++)
    {
        structArr[cnt].x = cnt+1;
        structArr[cnt].y = cnt+10;
    }

    AddStructure(structArr, &cnt);

    for(i=0; i<cnt; i++)
    {
        printf("structArr[%d] x=[%2d] y=[%2d]\n", i, structArr[i].x, structArr[i].y);
    }
}

'c' 카테고리의 다른 글

리눅스 IP충돌 체크  (0) 2022.09.08
리눅스 정규식을 이용한 IP / Email 주소 체크  (0) 2022.09.06
리눅스 usb mount 예제  (0) 2021.07.20
ASCII & 한글 완성형(KSC5601) 출력 소스  (0) 2021.07.08
C관련Etc...  (0) 2021.06.17
Posted by afewgood
,