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

PHPz
풀어 주다: 2023-04-23 08:31:06
앞으로
2433명이 탐색했습니다.

방법 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿