본문 바로가기

프로그래밍 언어 노트/Python

Python 에서 IP 가져오기

연구실에서 다수의 서버에서 실험을 돌리는데

클러스터링이 되있지 않아 전부 수동으로 돌린다 ㅜ

그래서 좀더 편하게 실험 데이터를 뽑기위하여 파이썬 스크립팅을 많이 하는데

 

이번에는 각 서버에서 돌릴 배치파일을 자동으로 실행시켜주게 하기위하여 자신의 IP 를 가져오는것이 필요해졌다.

 

import socket

print(socket.gethostbyname(socket.getfqdn()))			#1-1
print(socket.gethostbyname(socket.gethostname()))		#1-2

print(socket.gethostbyname_ex(socket.getfqdn()))		#2

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)	#3
s.connect(('8.8.8.8', 0))
ip = s.getsockname()[0]
print(ip)

일반적으로 #1 방법을 사용한다고 하는데

이게 그냥 cmd 에서 ipconfig, ifconfig했을때 맨처음에 나오는녀석을 가져오는것 같다 ㅡㅡ

서버야 상관없는데 내컴퓨터는 도커에 관한 ip가 자꾸 가져와진다...

#2처럼 쓰면 그 목록을 전부 가져오는것이 가능하다.

 

여튼 전부가져오고 거기서 IP를 찾는것보다

#3처럼 UDP 커넥을 이용하는 방법으로 하면 바로 찾을수있다. (Private IP 인 경우에만 이며, Public은 외부 응답으로 가져와야한다)

 

728x90