天天看点

利用python 获取本机IP地址

应用场景:

本机 ip 在变化,但是代码中需要IP当参数,

这时候我们可以用下面几种方法来获取IP地址

利用python 获取本机IP地址

方法一 (适用于Linux 系统):

import os
import re

ipstr = os.popen(""" ifconfig | sed -n "2p" """).readlines()

#效果是这样子的啊
# ['          inet addr:192.168.8.110  Bcast:192.168.8.255  Mask:255.255.255.0\n']

#然后强大的正则来了


ip = re.findall("((?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d]))", ipstr)[0]

print(ip)
           

方法二 (Linux  window 都适用):

利用python 获取本机IP地址

这个 主要是用socket 协议  ,懒的写代码了,现搬了一个  

原文网址 https://blog.csdn.net/u013314786/article/details/78962103

解释一下,这个是通过 connet,这里她选择8.8.8.8,是Google提供的免费DNS服务器的IP地址,一般不会挂,完成一个有连接协议的连接过程,在利用这个函数

int getsockname(int s, struct sockaddr *name, socklen_t *namelen);

Get the current name for the specified socket.

获取本地套接口的名字,包括它的IP和端口。

import socket

def get_host_ip():
    """
    查询本机ip地址
    :return: 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

if __name__ == '__main__':
    print(get_host_ip())