개요
로그 파일에서 네트워크와 관련된 데이터를 다룰 때 ipaddress
모듈을 사용하는 몇 가지 상황을 실습으로 이해해보자.
IP 주소 필터링 및 분석
로그 파일에서 특정 IP 주소만 추출하거나, 특정 서브넷에 속하는 IP 주소를 필터링해야 할 때 ipaddress
모듈을 사용할 수 있다.
import ipaddress
import ipaddress
log_data :list[str] = [
"192.168.1.10 - GET /index.html",
"10.0.0.5 - GET /about.html",
"172.16.0.8 - POST /login"
]
network = ipaddress.ip_network("192.168.1.0/24")
for entry in log_data:
ip_str = entry.split()[0]
ip = ipaddress.ip_address(ip_str)
if ip in network:
print(f"{ip} is within the network {network}: {entry}")
이 스크립트는 로그 파일에서 특정 서브넷(192.168.1.0/24
)에 속하는 IP 주소만 필터링하여 출력한다.
로그 데이터에서 IP 주소 변환
로그 파일에서 IP 주소를 정수형으로 변환하거나, 정수형으로 저장된 IP 주소를 사람이 읽을 수 있는 형식으로 변환하는 데 사용할 수 있다.
이는 로그 데이터를 처리할 때 특히 도움이 될 수 있다.
log_data = [
"3232235778 - GET /index.html", # 192.168.1.2 in integer form
"167772160 - GET /about.html", # 10.0.0.0 in integer form
]
for entry in log_data:
int_ip = int(entry.split()[0])
ip = ipaddress.ip_address(int_ip)
print(f"Integer {int_ip} corresponds to IP address {ip}.")