본문 바로가기
다양한 TIP

Geo IP 사용방법

by 유기농프로그래밍 2019. 1. 7.
반응형

특정 IP의 국가코드가 궁금하다면, 아래와 같이 해보길 바란다.


일단 아래 패키지가 설치되어 있어야 한다.

libgeoip-dev


설치는 debian에서 아래 명령을 이용하면 된다.


apt-get install libgeoip-dev


아래와 같이 대충 코드를 짜면 국가코드를 출력하는 프로그램이 생성된다.



======================================================

GeoIP.cpp

======================================================

#include <cstdio>

#include <cstdlib>

#include <GeoIP.h>

#include <string>


int main ( int argc, char* argv[] )

{

    if ( argc == 1 )

    {

        printf( "Input IP Address!\n" );

        printf( "ex) ./GeoIP 192.168.22.159\n" );

        return -1;

    }


    std::string ip = argv[1];


    if ( ip.find(".") == std::string::npos )

    {

        printf( "Input Data[%s]\n", argv[1] );

        printf( "Input IPv4 Format!\n" );

        printf( "ex) 192.168.22.159\n" );

        return -1;

    }

    GeoIP * pGI = GeoIP_open("GeoIP.dat", GEOIP_MEMORY_CACHE);


    if ( pGI == NULL )

    {

        // Error Opening file GeoIP.dat

        return -1;

    }


    const char* pcode = GeoIP_country_code_by_addr( pGI, argv[1] );

    if ( pcode )

    {

        printf( "pcode[%s]\n", pcode );

    }

    else

    {

        printf( "pcode is NULL\n" );

    }

    GeoIP_delete(pGI);

    return 0;

}


======================================================

======================================================



컴파일은 아래 명령어로 -lGeoIP 옵션을 넣어줘야한다.


g++ GeoIP.cpp -lGeoIP -o GeoIP



여기서 GeoIP.dat이라는 파일이 있어야한다.

이 파일은 아래 주소에서 받을 수 있다.


http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz



받은 파일의 압축을 푼다.

gunzip -f GeoIP.dat.gz



같은 폴더에 넣어주고 아래와 같이 실행한다.


./GeoIP 1.1.1.1


# ./GeoIP 1.1.1.1

pcode[AU]



반응형

'다양한 TIP' 카테고리의 다른 글

gdb 에서 print 할 때 전체 보이게 하는 방법  (0) 2019.01.08
python tab을 space 4개로 변환해주기  (0) 2019.01.07
vi White Space 제거  (0) 2019.01.07

댓글