Heim > Backend-Entwicklung > Python-Tutorial > Verwenden Sie Python, um eine IP-Adresse unter Linux und Windows zu erhalten

Verwenden Sie Python, um eine IP-Adresse unter Linux und Windows zu erhalten

高洛峰
Freigeben: 2016-10-18 14:47:04
Original
1751 Leute haben es durchsucht

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
Nach dem Login kopieren

oder

#引入socket模块
import socket
myname = socket.getfqdn(socket.gethostname())
myaddr = socket.gethostbyname(myname)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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')
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage