获取本机所有网卡的 IP 地址:
IPs = socket.gethostbyname_ex(socket.gethostname())[-1]
获取正在上网的本机网卡 IP 地址:
WIndows:
[a for a in os.popen('route print').readlines() if ' 0.0.0.0 ' in a][0].split()[-2]
Linux:
os.popen("ifconfig | grep inet").readlines()[0].strip().split(' ')[1]
优雅的获取 IP(推荐)
import socket
def get_host_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip