在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 "%localIPipList = 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(";) except: try: myip = self.visit(";) 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() |