Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mendapatkan alamat IP intranet tempatan dalam Python

Bagaimana untuk mendapatkan alamat IP intranet tempatan dalam Python

PHPz
PHPzke hadapan
2023-04-23 08:31:062407semak imbas

Kaedah 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

Kaedah 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

Kaedah ini menggunakan arahan nama hos pada sistem Unix untuk mendapatkan alamat IP dan mengembalikan alamat IP dalam format rentetan. Jika anda menggunakan sistem Windows, anda perlu menggunakan arahan ipconfig. Anda boleh menghantar arahan yang betul dalam subprocess.check_output untuk mendapatkan alamat IP pada 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

Kaedah ini menggunakan fungsi getaddrinfo untuk mendapatkan alamat IP komputer dan mengembalikan alamat IP dalam format rentetan.

Kaedah tiga (modul pihak ketiga)

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

Kaedah ini menggunakan modul netifas untuk mendapatkan senarai antara muka rangkaian komputer dan mencari alamat IP antara muka gelung balik bukan tempatan yang pertama. Ia kemudian mengembalikan alamat IP dalam format rentetan.

Kaedah 4 (Linux)

Jika anda menjalankan program Python pada sistem Linux, anda boleh menggunakan arahan ifconfig untuk mendapatkan alamat IP intranet. Berikut ialah fungsi Python yang boleh digunakan pada sistem 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

Kaedah ini menggunakan modul subproses untuk menjalankan perintah ifconfig Linux dan mengekstrak alamat IP daripada output arahan. Ia mengembalikan alamat IP dalam format rentetan.

Sila ambil perhatian bahawa kaedah ini hanya berfungsi pada sistem Linux. Jika anda menggunakan sistem pengendalian yang berbeza, gunakan salah satu kaedah yang dinyatakan sebelum ini untuk mendapatkan alamat IP dalaman komputer anda.

Kaedah 5 (tetingkap)

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

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan alamat IP intranet tempatan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam