Maison  >  Article  >  développement back-end  >  Comment obtenir l'adresse IP de l'intranet local en Python

Comment obtenir l'adresse IP de l'intranet local en Python

PHPz
PHPzavant
2023-04-23 08:31:062407parcourir

Méthode 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

Méthode 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

Cette méthode utilise la commande hostname sur le système Unix pour obtenir l'adresse IP et renvoie l'adresse IP au format chaîne. Si vous utilisez un système Windows, vous devez utiliser la commande ipconfig. Vous pouvez passer la commande correcte dans subprocess.check_output pour obtenir l'adresse IP sous Windows.

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

Cette méthode utilise la fonction getaddrinfo pour obtenir l'adresse IP de l'ordinateur et renvoie l'adresse IP au format chaîne.

Troisième méthode (module à trois)

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

Cette méthode utilise le module netifaces pour obtenir la liste des interfaces réseau de l'ordinateur et trouver l'adresse IP de la première interface de bouclage non locale. Il renvoie ensuite l'adresse IP sous forme de chaîne.

Méthode 4 (Linux)

Si vous exécutez un programme Python sur un système Linux, vous pouvez utiliser la commande ifconfig pour obtenir l'adresse IP de l'intranet. Voici une fonction Python qui peut être utilisée sur les systèmes Linux :

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

Cette méthode utilise le module subprocess pour exécuter la commande Linux ifconfig et extraire l'adresse IP de la sortie de la commande. Il renvoie l'adresse IP au format chaîne.

Veuillez noter que cette méthode ne fonctionne que sur les systèmes Linux. Si vous utilisez un autre système d'exploitation, utilisez l'une des méthodes mentionnées précédemment pour obtenir l'adresse IP interne de votre ordinateur.

Méthode 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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer