python获取本机ip地址三种方法

发布时间:2020-12-17编辑:脚本学堂
python取得本机ip地址的三种方法,使用gethostbyname和gethostbyname_ex函数获取ip地址,socket模块取IP地址,linux下socket模块与fcntl模块获取ip地址的方法。

python得到本机IP地址,在windows和linux下稍有不同。

一、windows下获得IP地址

方法一

使用拨号上网,会有本地ip与外网ip,使用python得到这两个ip,使用gethostbyname和gethostbyname_ex函数。

例1:
 

复制代码 代码示例:

#!/usr/bin/env python

import socket
localIP = socket.gethostbyname(socket.gethostname()) #得到本地IP地址
print "local ip:%s "%localIP
 
ipList = socket.gethostbyname_ex(socket.gethostname())
for i in ipList:
    if i != localIP:
       print "external IP:%s"%i

方法二

例2,socket模块取IP地址:
 

复制代码 代码示例:

#!/usr/bin/env python

import socket
 
myname = socket.getfqdn(socket.gethostname())
myaddr = socket.gethostbyname(myname)
 

Linux下获得IP地址的方法

二、linux下获取本机ip地址。

例3,socket模块与fcntl模块用法。
 

复制代码 代码示例:

#!/usr/bin/env python

import socket
import fcntl
import struct
 
def get_ip_address(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        0x8915,  # SIOCGIFADDR
        struct.pack('256s', ifname[:15])
    )[20:24])