Python: obtener la dirección IP de la intranet

método uno

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étodo dos

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

Este método utiliza hostnameel comando en el sistema Unix para obtener la dirección IP y devuelve la dirección IP en formato de cadena. Si está utilizando un sistema Windows, debe utilizar ipconfigel comando. Puede subprocess.check_outputpasar el comando correcto para obtener la dirección IP en 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

Este método utiliza getaddrinfola función para obtener la dirección IP de la computadora y devuelve la dirección IP en formato de cadena.

Método 3 (módulo tripartito)

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

Este método utiliza netifacesel módulo para obtener una lista de las interfaces de red de la computadora y encuentra la dirección IP de la primera interfaz de loopback no local. Luego devuelve la dirección IP en formato de cadena.

Método 4 (Linux)

Si está ejecutando un programa Python en un sistema Linux, puede usar ifconfigcomandos para obtener la dirección IP de la intranet. Aquí hay una función de Python que se puede usar en sistemas 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

Este método utiliza subprocessun módulo para ejecutar un ifconfigcomando de Linux y extraer la dirección IP de la salida del comando. Devuelve una dirección IP en formato de cadena.

Tenga en cuenta que este método sólo es aplicable a sistemas Linux. Si está utilizando otro sistema operativo, utilice uno de los métodos mencionados anteriormente para obtener la dirección IP interna de su computadora.

Método cinco (ventanas)

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

Supongo que te gusta

Origin blog.csdn.net/weixin_44634704/article/details/129690347
Recomendado
Clasificación