Python에서 CSV의 IP 주소 목록을 가져오고 국가 이름을 부여합니다.
개시하다
방문일지를 보고 방문원을 조사하는 국명이 있습니다.
액세스 로그는 CSV에서 출력되므로 지금까지 IP 주소를 확인하십시오.리눅스의'geoiploop'지령과 손싸움 조사를 진행했다.그 효율이 너무 떨어지기 때문에 나는 CSV 파일을 자동으로 가져오고 모든 것을 조사하고 국명을 부여한 다음에 CSV 파일을 출력할 수 있는 Python 프로그램을 만들었다.
환경 및 준비 작업
환경 정보
Winodws10Pro+Visual Studio Code에서 구현되었습니다.
python의 버전은 Python 3.6.1입니다.
geoip2 모듈 설치
Python으로 IP 주소에서 국명을 검색하려면 Geoip2를 설치해야 합니다."pip install geoip2"명령을 실행해야 하지만, Windows의 환경 변수가python 경로를 통과하면 이 명령도 시작됩니다.PowerShell의 콘솔을 시작하고 명령을 입력하면 Geoip2가 안전하게 설치됩니다.
Cisco TALOS
GeoLite2 데이터베이스 다운로드
MAXMIND 웹 사이트에서 IP 주소의 데이터를 다운로드합니다.
"GeoLite2 Country"의 "MaxMind DB binary, gzipped"를 다운로드하여 압축을 풀고 Python 스크립트가 있는 폴더에 넣습니다.tar.gz 파일은 Windows 표준 압축 해제 도구로 해제할 수 없기 때문에 7zip을 사용했습니다.
CSV 파일 정보
예상되는 CSV 파일은 제목 행이 없는 날짜 시간, 액세스 소스 IP 주소 2열로만 구성됩니다.
iplist.csv2018/1/1 0:00,1.1.1.1
2018/2/1 0:00,2.1.1.1
2018/3/1 0:00,3.1.1.1
2018/4/1 0:00,4.1.1.1
2018/5/1 0:00,5.1.1.1
2018/6/1 0:00,6.1.1.1
2018/7/1 0:00,7.1.1.1
2018/8/1 0:00,8.1.1.1
2018/9/1 0:00,9.1.1.1
IP 주소의 국명을 구하는 스크립트
먼저 IP 주소에서 국가 이름을 계산하는 함수를 만듭니다.소스 CSV 파일의 각 행에서 함수를 읽고 결과를 CSV 파일로 출력합니다.
geoiplookup## モジュールの読み込み
import geoip2.database
import csv
## GeoIPデータベースとCSVファイルのパス設定
geoip_db_path = "GeoLite2-Country_20190430/GeoLite2-Country.mmdb"
source_file_path = "iplist.csv"
result_file_path = "result.csv"
## IPアドレスから国名を求める関数
def ipaddrlookup(ipaddress):
reader = geoip2.database.Reader(geoip_db_path)
response = reader.country(ipaddress)
countoryname = response.country.names["en"]
return countoryname
## IPアドレスリストの取り込み
source_file = open(source_file_path, encoding = "ansi")
source_reader = csv.reader(source_file)
source_list = list(source_reader)
## 出力ファイルをオープン
result_file = open(result_file_path, "w", newline="")
result_writer = csv.writer(result_file)
## 取り込んだCSVファイルのIPアドレスから国名を求める
for row in source_list:
outputdata = [row[0]]
outputdata.append(row[1])
outputdata.append(ipaddrlookup(row[1]))
result_writer.writerow(outputdata)
## 出力ファイルをクローズ
result_file.close()
출력된 CSV 파일
날짜 시간, 액세스 소스 IP 주소 열 다음에 액세스 소스 국가 이름 열이 첨부된 CSV 파일을 출력합니다.
result.csv2018/1/1 0:00,1.1.1.1,Australia
2018/2/1 0:00,2.1.1.1,France
2018/3/1 0:00,3.1.1.1,Singapore
2018/4/1 0:00,4.1.1.1,United States
2018/5/1 0:00,5.1.1.1,Ukraine
2018/6/1 0:00,6.1.1.1,United States
2018/7/1 0:00,7.1.1.1,United States
2018/8/1 0:00,8.1.1.1,United States
2018/9/1 0:00,9.1.1.1,United States
참조 정보
사이트 축소판 그림
GeoLite2 Free Downloadable Databases
GeoLite2를 통해 쉽게 수행할 수 있는 IP 주소의 국가 판정
참고서
윈도우즈 10에서 pip를 사용할 수 있을 때까지 (pythn 3.6)
심심한 건 파이토슨이 하세요. - 비프로그래머도 할 수 있는 자동화 프로세서 디자인.
Reference
이 문제에 관하여(Python에서 CSV의 IP 주소 목록을 가져오고 국가 이름을 부여합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uranux_jp/items/2ef82e19ad7c69b65562
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
환경 정보
Winodws10Pro+Visual Studio Code에서 구현되었습니다.
python의 버전은 Python 3.6.1입니다.
geoip2 모듈 설치
Python으로 IP 주소에서 국명을 검색하려면 Geoip2를 설치해야 합니다."pip install geoip2"명령을 실행해야 하지만, Windows의 환경 변수가python 경로를 통과하면 이 명령도 시작됩니다.PowerShell의 콘솔을 시작하고 명령을 입력하면 Geoip2가 안전하게 설치됩니다.
Cisco TALOS
GeoLite2 데이터베이스 다운로드
MAXMIND 웹 사이트에서 IP 주소의 데이터를 다운로드합니다.
"GeoLite2 Country"의 "MaxMind DB binary, gzipped"를 다운로드하여 압축을 풀고 Python 스크립트가 있는 폴더에 넣습니다.tar.gz 파일은 Windows 표준 압축 해제 도구로 해제할 수 없기 때문에 7zip을 사용했습니다.
CSV 파일 정보
예상되는 CSV 파일은 제목 행이 없는 날짜 시간, 액세스 소스 IP 주소 2열로만 구성됩니다.
iplist.csv2018/1/1 0:00,1.1.1.1
2018/2/1 0:00,2.1.1.1
2018/3/1 0:00,3.1.1.1
2018/4/1 0:00,4.1.1.1
2018/5/1 0:00,5.1.1.1
2018/6/1 0:00,6.1.1.1
2018/7/1 0:00,7.1.1.1
2018/8/1 0:00,8.1.1.1
2018/9/1 0:00,9.1.1.1
IP 주소의 국명을 구하는 스크립트
먼저 IP 주소에서 국가 이름을 계산하는 함수를 만듭니다.소스 CSV 파일의 각 행에서 함수를 읽고 결과를 CSV 파일로 출력합니다.
geoiplookup## モジュールの読み込み
import geoip2.database
import csv
## GeoIPデータベースとCSVファイルのパス設定
geoip_db_path = "GeoLite2-Country_20190430/GeoLite2-Country.mmdb"
source_file_path = "iplist.csv"
result_file_path = "result.csv"
## IPアドレスから国名を求める関数
def ipaddrlookup(ipaddress):
reader = geoip2.database.Reader(geoip_db_path)
response = reader.country(ipaddress)
countoryname = response.country.names["en"]
return countoryname
## IPアドレスリストの取り込み
source_file = open(source_file_path, encoding = "ansi")
source_reader = csv.reader(source_file)
source_list = list(source_reader)
## 出力ファイルをオープン
result_file = open(result_file_path, "w", newline="")
result_writer = csv.writer(result_file)
## 取り込んだCSVファイルのIPアドレスから国名を求める
for row in source_list:
outputdata = [row[0]]
outputdata.append(row[1])
outputdata.append(ipaddrlookup(row[1]))
result_writer.writerow(outputdata)
## 出力ファイルをクローズ
result_file.close()
출력된 CSV 파일
날짜 시간, 액세스 소스 IP 주소 열 다음에 액세스 소스 국가 이름 열이 첨부된 CSV 파일을 출력합니다.
result.csv2018/1/1 0:00,1.1.1.1,Australia
2018/2/1 0:00,2.1.1.1,France
2018/3/1 0:00,3.1.1.1,Singapore
2018/4/1 0:00,4.1.1.1,United States
2018/5/1 0:00,5.1.1.1,Ukraine
2018/6/1 0:00,6.1.1.1,United States
2018/7/1 0:00,7.1.1.1,United States
2018/8/1 0:00,8.1.1.1,United States
2018/9/1 0:00,9.1.1.1,United States
참조 정보
사이트 축소판 그림
GeoLite2 Free Downloadable Databases
GeoLite2를 통해 쉽게 수행할 수 있는 IP 주소의 국가 판정
참고서
윈도우즈 10에서 pip를 사용할 수 있을 때까지 (pythn 3.6)
심심한 건 파이토슨이 하세요. - 비프로그래머도 할 수 있는 자동화 프로세서 디자인.
Reference
이 문제에 관하여(Python에서 CSV의 IP 주소 목록을 가져오고 국가 이름을 부여합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uranux_jp/items/2ef82e19ad7c69b65562
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2018/1/1 0:00,1.1.1.1
2018/2/1 0:00,2.1.1.1
2018/3/1 0:00,3.1.1.1
2018/4/1 0:00,4.1.1.1
2018/5/1 0:00,5.1.1.1
2018/6/1 0:00,6.1.1.1
2018/7/1 0:00,7.1.1.1
2018/8/1 0:00,8.1.1.1
2018/9/1 0:00,9.1.1.1
먼저 IP 주소에서 국가 이름을 계산하는 함수를 만듭니다.소스 CSV 파일의 각 행에서 함수를 읽고 결과를 CSV 파일로 출력합니다.
geoiplookup
## モジュールの読み込み
import geoip2.database
import csv
## GeoIPデータベースとCSVファイルのパス設定
geoip_db_path = "GeoLite2-Country_20190430/GeoLite2-Country.mmdb"
source_file_path = "iplist.csv"
result_file_path = "result.csv"
## IPアドレスから国名を求める関数
def ipaddrlookup(ipaddress):
reader = geoip2.database.Reader(geoip_db_path)
response = reader.country(ipaddress)
countoryname = response.country.names["en"]
return countoryname
## IPアドレスリストの取り込み
source_file = open(source_file_path, encoding = "ansi")
source_reader = csv.reader(source_file)
source_list = list(source_reader)
## 出力ファイルをオープン
result_file = open(result_file_path, "w", newline="")
result_writer = csv.writer(result_file)
## 取り込んだCSVファイルのIPアドレスから国名を求める
for row in source_list:
outputdata = [row[0]]
outputdata.append(row[1])
outputdata.append(ipaddrlookup(row[1]))
result_writer.writerow(outputdata)
## 出力ファイルをクローズ
result_file.close()
출력된 CSV 파일
날짜 시간, 액세스 소스 IP 주소 열 다음에 액세스 소스 국가 이름 열이 첨부된 CSV 파일을 출력합니다.
result.csv2018/1/1 0:00,1.1.1.1,Australia
2018/2/1 0:00,2.1.1.1,France
2018/3/1 0:00,3.1.1.1,Singapore
2018/4/1 0:00,4.1.1.1,United States
2018/5/1 0:00,5.1.1.1,Ukraine
2018/6/1 0:00,6.1.1.1,United States
2018/7/1 0:00,7.1.1.1,United States
2018/8/1 0:00,8.1.1.1,United States
2018/9/1 0:00,9.1.1.1,United States
참조 정보
사이트 축소판 그림
GeoLite2 Free Downloadable Databases
GeoLite2를 통해 쉽게 수행할 수 있는 IP 주소의 국가 판정
참고서
윈도우즈 10에서 pip를 사용할 수 있을 때까지 (pythn 3.6)
심심한 건 파이토슨이 하세요. - 비프로그래머도 할 수 있는 자동화 프로세서 디자인.
Reference
이 문제에 관하여(Python에서 CSV의 IP 주소 목록을 가져오고 국가 이름을 부여합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uranux_jp/items/2ef82e19ad7c69b65562
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2018/1/1 0:00,1.1.1.1,Australia
2018/2/1 0:00,2.1.1.1,France
2018/3/1 0:00,3.1.1.1,Singapore
2018/4/1 0:00,4.1.1.1,United States
2018/5/1 0:00,5.1.1.1,Ukraine
2018/6/1 0:00,6.1.1.1,United States
2018/7/1 0:00,7.1.1.1,United States
2018/8/1 0:00,8.1.1.1,United States
2018/9/1 0:00,9.1.1.1,United States
사이트 축소판 그림
GeoLite2 Free Downloadable Databases
GeoLite2를 통해 쉽게 수행할 수 있는 IP 주소의 국가 판정
참고서
윈도우즈 10에서 pip를 사용할 수 있을 때까지 (pythn 3.6)
심심한 건 파이토슨이 하세요. - 비프로그래머도 할 수 있는 자동화 프로세서 디자인.
Reference
이 문제에 관하여(Python에서 CSV의 IP 주소 목록을 가져오고 국가 이름을 부여합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uranux_jp/items/2ef82e19ad7c69b65562텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)