Mit Python können Sie die lokale IP-Adresse auf sehr einfache Weise abrufen. Die Methoden unter Windows und Linux unterscheiden sich jedoch geringfügig:
Ermitteln der IP-Adresse unter Windows
Methode 1: Verwenden Sie das Socket-Modul
Wenn Sie einen DFÜ-Internetzugang verwenden, haben Sie normalerweise eine lokale IP und eine externe IP Dies kann ganz einfach mit Python erfolgen. Um diese beiden IPs zu erhalten, verwenden Sie die beiden Funktionen gethostbyname und gethostbyname_ex, um
#使用socket模块 import socket #得到本地ip localIP = socket.gethostbyname(socket.gethostname()) print"local ip:%s "%localIP ipList = socket.gethostbyname_ex(socket.gethostname())for i in ipList: if i != localIP: print"external IP:%s"%i
oder
#引入socket模块 import socket myname = socket.getfqdn(socket.gethostname()) myaddr = socket.gethostbyname(myname)
zu erreichen. Methode 2 verwendet reguläre Ausdrücke und das urllib2-Modul
diese Methode Um die öffentliche IP zu erhalten, verwenden wir die von anderen Websites bereitgestellte IP-Erkennungsfunktion und crawlen die Seite dann mit Python, um eine reguläre Übereinstimmung zu erhalten. Aber diese Methode ist genauer
import re,urllib2 from subprocess import Popen, PIPE print "本机的私网IP地址为:" + re.search('\d+\.\d+\.\d+\.\d+',Popen('ipconfig', stdout=PIPE).stdout.read()).group(0) #利用其他网站提供的接口,使用urllib2获取其中的ip print "本机的公网IP地址为:" +re.search('\d+\.\d+\.\d+\.\d+',urllib2.urlopen("http://www.ip138.com").read()).group(0)
So erhalten Sie eine IP-Adresse unter Linux
Die obige Methode ist Es kann auch unter Linux verwendet werden. Darüber hinaus können Sie die folgende Methode verwenden, um die lokale IP-Adresse unter Linux zu erhalten.
import socket import fcntl import struct def get_ip_address(ifname): skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print skt pktString = fcntl.ioctl(skt.fileno(), 0x8915, struct.pack('256s', ifname[:15])) print pktString ipString = socket.inet_ntoa(pktString[20:24]) print ipString return ipString print get_ip_address('lo') print get_ip_address('eth1')