python --Get intranet IP address

method one

import socket

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

Method Two

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

This method utilizes hostnamethe command on the Unix system to obtain the IP address and returns the IP address in string format. If you are using a Windows system, you need to use ipconfigthe command. You can subprocess.check_outputpass the correct command in to get the IP address on 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

This method uses getaddrinfothe function to obtain the IP address of the computer and returns the IP address in string format.

Method 3 (three-party module)

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

This method uses netifacesthe module to get a list of the computer's network interfaces and finds the IP address of the first non-local loopback interface. It then returns the IP address in a string format.

Method 4 (Linux)

If you are running a Python program on a Linux system, you can use ifconfigcommands to obtain the intranet IP address. Here is a Python function that can be used on Linux systems:

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

This method uses subprocessa module to run a Linux ifconfigcommand and extract the IP address from the command output. It returns an IP address in string format.

Note that this method is only applicable to Linux systems. If you're using another operating system, use one of the previously mentioned methods to get your computer's internal IP address.

Method five (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

Guess you like

Origin blog.csdn.net/weixin_44634704/article/details/129690347