Python IP 정보 확인 하는 방법

2020. 12. 1. 17:16프로그래밍 개발(Development)/Python

반응형

Python을 사용하다 보면 Local IP를 알아야하는 경우가 생깁니다.

 

그럼 쉽고 빠르게 가져오는 방법을 알아보겠습니다.

 

 

일반적으로 표준 라이브러리를 사용하는 방법으로 gethostname을 이용하여 ip를 변환하는 방법을 사용하게 되면

자동(DHCP) 또는 수동(STATIC)으로 지정한 IP가 아닌 localhost인 127.0.0.1이 출력이 됩니다.

import socket
hostname = socket.gethostname()
hostip = socket.gethostbyname(hostname)
print (hostip)

 

결과

ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.113.201  netmask 255.255.255.0  broadcast 172.16.113.255
        inet6 fe80::d437:67ea:9eae:37c1  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:96:ea:e8  txqueuelen 1000  (Ethernet)
        RX packets 31536900  bytes 13085685046 (12.1 GiB)
        RX errors 0  dropped 33336  overruns 0  frame 0
        TX packets 8136205  bytes 7885232812 (7.3 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 78  bytes 7036 (6.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78  bytes 7036 (6.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

이럴때 내가 원하는 인터페이스의 IP 주소를 가져오는 방법을 알아보겠습니다.

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print (s.getsockname()[0])
s.close()

 

결과

이렇게 실행을 하게되면 인터페이스 명을 몰라도 실제 네트워크에 접근하는 ip의 정보를 알수가 있습니다.

 

소켓의 source ip를 가져오는 것이기 때문에 인터넷이 연결되어 있지 않아도 조회가 가능합니다.

반응형