>  기사  >  백엔드 개발  >  Python에서 로컬 인트라넷 IP 주소를 얻는 방법

Python에서 로컬 인트라넷 IP 주소를 얻는 방법

PHPz
PHPz앞으로
2023-04-23 08:31:062413검색

방법 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 시스템에서 호스트 이름 명령을 사용하여 IP 주소를 얻고 IP 주소를 문자열 형식으로 반환합니다. Windows 시스템을 사용하는 경우 ipconfig 명령을 사용해야 합니다. subprocess.check_output에서 올바른 명령을 전달하여 Windows에서 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(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제