Python實現(xiàn)獲取內網(wǎng)IP地址的方法總結
方法一
import socket def get_local_ip_address(): ip_address = '' try: # 獲取本機主機名 hostname = socket.gethostname() # 獲取本機IP ip_address = socket.gethostbyname(hostname) except: pass return ip_address
方法二
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系統(tǒng)上的hostname命令來獲取IP地址,并返回字符串格式的IP地址。如果你使用的是Windows系統(tǒng),則需要使用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函數(shù)獲取計算機的IP地址,并返回字符串格式的IP地址。
方法三(三方模塊)
import netifaces def get_local_ip_address(): ip_address = '' try: # 獲取網(wǎng)絡接口列表 interfaces = netifaces.interfaces() # 查找第一個非本地回環(huán)接口的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模塊來獲取計算機的網(wǎng)絡接口列表,并查找第一個非本地回環(huán)接口的IP地址。然后,它返回一個字符串格式的IP地址。
方法四(Linux)
如果你是在Linux系統(tǒng)上運行Python程序,可以使用ifconfig命令來獲取內網(wǎng)IP地址。以下是一個可以在Linux系統(tǒng)上使用的Python函數(shù):
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系統(tǒng)。如果你使用的是其他操作系統(tǒng),請使用前面提到的方法之一來獲取計算機的內部IP地址。
方法五(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實現(xiàn)獲取內網(wǎng)IP地址的方法總結的文章就介紹到這了,更多相關Python獲取內網(wǎng)IP地址內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Django3.2 自動發(fā)現(xiàn)所有路由代碼詳解
這篇文章主要為大家介紹了Django自動發(fā)現(xiàn)所有路由的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12pycharm?使用conda虛擬環(huán)境的詳細配置過程
這篇文章主要介紹了pycharm?使用conda虛擬環(huán)境,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03