반응형
Python을 사용하여 현재 컴퓨터의 IP 주소를 알아내는 방법은 여러 가지가 있습니다. 일반적으로 socket
모듈을 사용하여 IP 주소를 얻을 수 있습니다. 아래는 Windows 및 Linux에서 모두 작동하는 코드를 제시합니다.
방법 1: socket
모듈 사용
socket
모듈을 사용하여 현재 연결된 IP 주소를 알아내는 방법입니다.
import socket
def get_ip_address():
try:
# 임의의 외부 호스트에 연결하여 로컬 IP 주소를 얻음 (예: Google DNS 서버)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip_address = s.getsockname()[0]
s.close()
except Exception as e:
ip_address = "Unable to get IP address"
print(f"Error: {e}")
return ip_address
if __name__ == "__main__":
ip = get_ip_address()
print(f"Your IP address is: {ip}")
이 코드는 Google의 공개 DNS 서버(8.8.8.8)와 연결을 시도하여 로컬 IP 주소를 얻습니다. 이는 대부분의 네트워크 설정에서 작동합니다.
방법 2: netifaces
모듈 사용
netifaces
모듈을 사용하면 보다 구체적으로 네트워크 인터페이스 정보를 얻을 수 있습니다. 이 모듈은 추가 설치가 필요합니다.
pip install netifaces
import netifaces
def get_ip_address():
ip_addresses = []
interfaces = netifaces.interfaces()
for interface in interfaces:
addresses = netifaces.ifaddresses(interface)
if netifaces.AF_INET in addresses:
for address in addresses[netifaces.AF_INET]:
ip_addresses.append(address['addr'])
return ip_addresses
if __name__ == "__main__":
ips = get_ip_address()
for ip in ips:
print(f"IP address: {ip}")
이 코드는 모든 네트워크 인터페이스에 대해 IP 주소를 가져와 출력합니다.
방법 3: subprocess
모듈 사용 (플랫폼 별)
Windows와 Linux에서 subprocess
모듈을 사용하여 시스템 명령어를 실행하여 IP 주소를 가져오는 방법입니다.
import subprocess
import platform
def get_ip_address():
ip_address = "Unable to get IP address"
try:
if platform.system() == "Windows":
result = subprocess.check_output("ipconfig", shell=True).decode()
for line in result.split("\n"):
if "IPv4 Address" in line:
ip_address = line.split(":")[-1].strip()
elif platform.system() == "Linux":
result = subprocess.check_output("hostname -I", shell=True).decode()
ip_address = result.strip()
except Exception as e:
print(f"Error: {e}")
return ip_address
if __name__ == "__main__":
ip = get_ip_address()
print(f"Your IP address is: {ip}")
이 코드는 Windows에서 ipconfig
명령어를, Linux에서 hostname -I
명령어를 사용하여 IP 주소를 얻습니다.
요약
- 방법 1:
socket
모듈을 사용하여 로컬 IP 주소를 얻습니다. 간단하고 대부분의 경우에 유용합니다. - 방법 2:
netifaces
모듈을 사용하여 네트워크 인터페이스별로 IP 주소를 얻습니다. 보다 구체적인 정보를 얻을 수 있습니다. - 방법 3:
subprocess
모듈을 사용하여 시스템 명령어를 실행하여 IP 주소를 얻습니다. 플랫폼별로 다르게 동작합니다.
각 방법은 서로 다른 상황에서 유용할 수 있으며, 필요에 따라 적절한 방법을 선택하여 사용할 수 있습니다.
반응형
댓글