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() |