Home >Backend Development >Python Tutorial >How to get the local intranet IP address in Python

How to get the local intranet IP address in Python

PHPz
PHPzforward
2023-04-23 08:31:062467browse

Method 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

Method 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

This method uses the hostname 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 the ipconfig command. You can pass the correct command in subprocess.check_output 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 the getaddrinfo function to obtain the IP address of the computer and returns the IP address in string format.

Method three (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 the netifaces module to obtain the computer's network interface list and find the IP address of the first non-local loopback interface. It then returns the IP address in string format.

Method 4 (Linux)

If you are running a Python program on a Linux system, you can use the ifconfig command to obtain the intranet IP address. The following 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 the subprocess module to run the Linux ifconfig command and extract the IP address from the command output. It returns the IP address in string format.

Please note that this method is only applicable to Linux systems. If you're using a different operating system, use one of the previously mentioned methods to obtain your computer's internal IP address.

Method 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

The above is the detailed content of How to get the local intranet IP address in Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete