Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie die lokale Intranet-IP-Adresse in Python

So erhalten Sie die lokale Intranet-IP-Adresse in Python

PHPz
PHPznach vorne
2023-04-23 08:31:062407Durchsuche

Methode 1

import socket

def get_local_ip_address():
    ip_address = ''
    try:
        # 获取本机主机名
        hostname = socket.gethostname()
        # 获取本机IP
        ip_address = socket.gethostbyname(hostname)
    except:
        pass
    return ip_address

Methode 2

import subprocess

def get_local_ip_address():
    ip_address = ''
    try:
        # 获取IP地址
        ip_address = subprocess.check_output(['hostname', '-I']).decode('utf-8').strip()
    except:
        pass
    return ip_address

Diese Methode verwendet den Hostnamen-Befehl auf dem Unix-System, um die IP-Adresse abzurufen und gibt die IP-Adresse im String-Format zurück. Wenn Sie ein Windows-System verwenden, müssen Sie den Befehl ipconfig verwenden. Sie können den richtigen Befehl in subprocess.check_output übergeben, um die IP-Adresse unter Windows abzurufen.

import socket

def get_local_ip_address():
    ip_address = ''
    try:
        # 获取IP地址
        ip_address = socket.getaddrinfo(socket.gethostname(), None, family=socket.AF_INET, proto=socket.IPPROTO_TCP)[0][4][0]
    except:
        pass
    return ip_address

Diese Methode verwendet die Funktion getaddrinfo, um die IP-Adresse des Computers abzurufen und gibt die IP-Adresse im String-Format zurück.

Methode Drei (Drei-Parteien-Modul)

import netifaces

def get_local_ip_address():
    ip_address = ''
    try:
        # 获取网络接口列表
        interfaces = netifaces.interfaces()
        # 查找第一个非本地回环接口的IP地址
        for interface in interfaces:
            if interface == 'lo':
                continue
            addresses = netifaces.ifaddresses(interface)
            ip_addresses = addresses.get(netifaces.AF_INET)
            if ip_addresses:
                ip_address = ip_addresses[0]['addr']
                break
    except:
        pass
    return ip_address

Diese Methode verwendet das Netifaces-Modul, um die Netzwerkschnittstellenliste des Computers abzurufen und die IP-Adresse der ersten nicht-lokalen Loopback-Schnittstelle zu finden. Anschließend wird die IP-Adresse im String-Format zurückgegeben.

Methode 4 (Linux)

Wenn Sie ein Python-Programm auf einem Linux-System ausführen, können Sie den Befehl ifconfig verwenden, um die Intranet-IP-Adresse abzurufen. Hier ist eine Python-Funktion, die auf Linux-Systemen verwendet werden kann:

import subprocess

def get_local_ip_address():
    ip_address = ''
    try:
        # 获取IP地址
        output = subprocess.check_output(['ifconfig']).decode('utf-8')
        lines = output.split('\n')
        for line in lines:
            if 'inet ' in line and not line.startswith('127.0.0.1'):
                ip_address = line.split()[1]
                break
    except:
        pass
    return ip_address

Diese Methode verwendet das Unterprozessmodul, um den Linux-Befehl ifconfig auszuführen und die IP-Adresse aus der Befehlsausgabe zu extrahieren. Es gibt die IP-Adresse im String-Format zurück.

Bitte beachten Sie, dass diese Methode nur auf Linux-Systemen funktioniert. Wenn Sie ein anderes Betriebssystem verwenden, verwenden Sie eine der zuvor genannten Methoden, um die interne IP-Adresse Ihres Computers zu ermitteln.

Methode 5 (Windows)

import os


def get_local_ip_address():
    ip_address = ''
    try:
        # 获取IP地址
        ipconfig_process = os.popen('ipconfig')
        ipconfig_output = ipconfig_process.read()
        ipconfig_process.close()
        for line in ipconfig_output.split('\n'):
            if 'IPv4' in line:
                ip_address = line.split(': ')[-1]
            break
    except:
        pass
    return ip_address

Das obige ist der detaillierte Inhalt vonSo erhalten Sie die lokale Intranet-IP-Adresse in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen