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

Bagaimana untuk mendapatkan alamat IP intranet tempatan dalam Python

PHPz
Lepaskan: 2023-04-23 08:31:06
ke hadapan
2471 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan