특정 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 |
댓글