ホームページ  >  記事  >  バックエンド開発  >  Python でローカル イントラネット IP アドレスを取得する方法

Python でローカル イントラネット IP アドレスを取得する方法

PHPz
PHPz転載
2023-04-23 08:31:062357ブラウズ

方法 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

方法 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

このメソッドは、Unix システムで hostname コマンドを使用して IP アドレスを取得し、文字列形式で IP アドレスを返します。 Windows システムを使用している場合は、ipconfig コマンドを使用する必要があります。 Windows では、subprocess.check_output に正しいコマンドを渡して IP アドレスを取得できます。

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

このメソッドは、getaddrinfo 関数を使用してコンピューターの IP アドレスを取得し、文字列形式で IP アドレスを返します。

方法 3 (スリーパーティ モジュール)

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

この方法では、netifaces モジュールを使用してコンピュータのネットワーク インターフェイス リストを取得し、最初の非ローカル ループバック インターフェイスの IP アドレスを見つけます。次に、IP アドレスを文字列形式で返します。

方法 4 (Linux)

Linux システム上で Python プログラムを実行している場合は、ifconfig コマンドを使用してイントラネット IP アドレスを取得できます。以下は、Linux システムで使用できる Python 関数です。

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

このメソッドは、subprocess モジュールを使用して Linux ifconfig コマンドを実行し、コマンド出力から IP アドレスを抽出します。 IP アドレスを文字列形式で返します。

この方法は Linux システムにのみ適用できることに注意してください。別のオペレーティング システムを使用している場合は、前述のいずれかの方法を使用してコンピュータの内部 IP アドレスを取得します。

方法 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

以上がPython でローカル イントラネット IP アドレスを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。