Python获取IP地址的三种方法

Python获取IP地址的三种方法

在python中获取IP地址的方法很简单,我们只和gethostbyname和gethostbyname_ex两个函数可以实现了,当然也可以利用公网api来实现。

使用拨号上网的话,一般都有一个本地ip和一个外网ip,使用python可以很容易的得到这两个ip

使用gethostbyname和gethostbyname_ex两个函数可以实现

代码如下

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

获取本地IP地址

代码如下

#!/usr/bin/python

import socket

import struct

import fcntl

def getip(ethname):

s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0X8915, struct.pack(‘256s’, ethname[:15]))[20:24])

if __name__==’__main__’:

print getip(‘eth0’)

方法二,公网地址直接获取IP

代码如下

#!/usr/bin/env python

import re,urllib2

class Get_public_ip:

def getip(self):

try:

myip = self.visit("http://www.111cn.net/")

except:

try:

myip = self.visit("http://www.ip138.com/ip2city.asp")

except:

myip = "So sorry!!!"

return myip

def visit(self,url):

opener = urllib2.urlopen(url)

if url == opener.geturl():

str = opener.read()

return re.search('d+.d+.d+.d+',str).group(0)

if __name__ == "__main__":

getmyip = Get_public_ip()

print getmyip.getip()