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를 가져오는 것이기 때문에 인터넷이 연결되어 있지 않아도 조회가 가능합니다.
반응형
'프로그래밍 개발(Development) > Python' 카테고리의 다른 글
Python MultiProcessing Pool사용법 (2) | 2021.08.24 |
---|---|
입력 순서를 기억하는 Dictionary[OrderedDict] (0) | 2021.08.19 |
Python sort by value in dictionary list (0) | 2021.06.08 |
Python List 값 중복 제거(Remove duplicate python list) (0) | 2020.10.19 |