Python获取本机IP地址的几种方式~转

news2024/10/6 2:28:06

Python获取本机IP地址的几种方式

目录

 1、使用专用网址

 2、使用自带socket库

 3、使用第三方netifaces库


1、使用专用网站

获取的是公网IP

网址: http://myip.ipip.net

代码:

import requests
res = requests.get('https://myip.ipip.net', timeout=5).text
print(res)
  • 1.
  • 2.
  • 3.

具体可以类似这样:

import requests
import re

def getOutterIP():
    ip = ''    
    try:
        res = requests.get('https://myip.ipip.net', timeout=5).text
        ip = re.findall(r'(\d+\.\d+\.\d+\.\d+)', res)
        ip = ip[0] if ip else ''
    except:
        pass
    return ip
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

Python获取本机IP地址的几种方式_主机名

 比较喜欢用这个,在命令窗口也能使用:

curl https://myip.ipip.net
  • 1.

Python获取本机IP地址的几种方式_网络_02

2、使用自带socket库

获取的是局域网IP

import socket
# 函数 gethostname() 返回当前正在执行 Python 的系统主机名
res = socket.gethostbyname(socket.gethostname())
print(res)
  • 1.
  • 2.
  • 3.
  • 4.

但是上面这个获取的不是公网IP,结果也不稳定(这里获取了虚拟机下的IP),不建议使用。

Python获取本机IP地址的几种方式_网络协议_03

 如果计算机设备有连接到 Internet 的路由,可以使用:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
  • 1.
  • 2.
  • 3.
  • 4.

这个获得的是局域网IP:

Python获取本机IP地址的几种方式_tcp/ip_04

可以ipconfig看一下:

Python获取本机IP地址的几种方式_主机名_05

另一个适用于所有接口。它还适用于所有公共、私有、外部 IP。这种方法在 Linux、Windows 和 OSX 上很有效。

import socket
def extract_ip():
    st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:       
        st.connect(('10.255.255.255', 1))
        IP = st.getsockname()[0]
    except Exception:
        IP = '127.0.0.1'
    finally:
        st.close()
    return IP
print(extract_ip())
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

注意:如果本身局域网IP就是公网IP的话,那这个获得的,可以认为是公网IP了。

3、使用第三方netifaces库

获取的是局域网IP

netifaces 模块用于提供有关网络接口及其状态的信息。

代码:

没装的先装一下库

pip3 install netifaces
  • 1.

然后使用

from netifaces import interfaces, ifaddresses, AF_INET
for ifaceName in interfaces():
    addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
    print(' '.join(addresses))
  • 1.
  • 2.
  • 3.
  • 4.

Python获取本机IP地址的几种方式_网络协议_06

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1083781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】C++11 —— 右值引用和移动语义

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】C11…

Java网络编程1

Java网络编程1 网络相关概念 把java网络编程的基础知识学习完之后,我们才会更加了解那些高性能的网络框架像neety它为什么要这样设计?才能把知识掌握的更加清晰。 网络通信 1)概念:两台设备之间,通过网络&#xff0c…

2023年中国车用磁传感器市场发展趋势分析:未来市场规模将保持较高速增长趋势[图]

磁传感器是把磁场、电流、应力应变、温度、光等外界因素引起敏感元件磁性能变化转换成电信号,以这种方式来检测相应物理量的器件。磁传感器广泛用于现代工业和电子产品中以感应磁场强度来测量电流、位置、方向等物理参数。在现有技术中,有许多不同类型的…

最新科技喜报!统一图像和文字生成的MiniGPT-5来了!

原创 | 文 BFT机器人 当前视觉和语言模型的应用非常广泛,包括多模态对话代理、先进的内容创作工具等。这些模型的多模态特征集成不仅是一种发展趋势,更是一项关键的进步,正在塑造着各种应用程序。 那如何在视觉和语言之间建立有效的联系&…

Matlab地理信息绘图—数据诊断

文章目录 数据诊断分析(均值方差)Matlab代码实现结果展示 数据诊断分析(均值方差) 均值方差检测是一种简单但有效的异常检测方法,主要基于样本的均值和方差的统计信息。该方法的核心思想是假设正常的样本点应该聚集在…

用Cmake快速生成vs工程

文章目录 1 安装cmake2 生成vs工程 1 安装cmake 官方网址: https://cmake.org/download/ 打开官网,根据自己需求下载所需文件。(本人是安装在Windows10-x64平台上,所以下文步骤均基于此平台) 下载好后,双…

大数据之Hudi数据湖_基本概念_时间轴_TimeLine---大数据之Hudi数据湖工作笔记0005

然后看一下hudi的,时间轴概念,很简单了,就是之前说的时间旅行,其实就是 比如在某个时间点,记录,这个时间点做了什么,就是这个意思 然后像回去看看的时候,可以找到这个时间点做了什么 一个时间点就是一个Instant (时刻 瞬间的意思) 可以看到时刻的解释 instant 时刻instant包…

【信创】 JED on 鲲鹏(ARM) 调优步骤与成果 | 京东云技术团队

项目背景 基于国家对信创项目的大力推进,为了自主可控的技术发展,基础组件将逐步由国产组件替代,因此从数据库入手,将弹性库JED部署在 国产华为鲲鹏机器上(基于ARM架构)进行调优,与Intel (X86)进行性能对比。 物理机…

基于全息感知的智慧高速IT设施监控运维方案

作为智能交通的重要细分领域,建设智慧高速是实施交通强国战略的重要基础。在信息化时代,交通行业已经依托信息化建设取得了显著的成果,其中以收费网络、办公网络、监控网络和通讯网络为基础的网络架构已经形成,并且正在逐步完善网…

Nginx proxy_set_header参数设置

一、不设置 proxy_set_header Host 不设置 proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 $proxy_host 的值,参考Module ngx_http_proxy_module 1 2 3 4 5 6 7 8 # cat ngx_header.c…

NIO基础-ByteBuffer,Channel

文章目录 1. 三大组件1.1 Channel1.2 Buffer1.2 Selector 2.ByteBuffer2.1 ByteBuffer 正确使用姿势2.2 ByteBuffer 结构2.3 ByteBuffer 常见方法分配空间向 buffer 写入数据从 buffer 读取数据mark 和 reset字符串与 ByteBuffer 互转分散度集中写byteBuffer黏包半包 3. 文件编…

简历石层大海,为何今年秋招那么难?技术面考官想听啥?

上个月发完关于《2023年的IC求职究竟有多难?》文章,后台就出现很多私信,大家都在频繁的问秋招的事情,今年的秋招提前批让很多人直接破防,感觉书读了那么久,学校也还不错,但是为什么企业招聘的简…

单车模型:横向动力学

文章目录 1 模型推导2 参考资料 较高车速下,不能再假设车轮朝向和车轮速度一致。因此运动学模型在这里的误差就会比较大,必须要考虑动力学模型。 现考虑2自由度单车模型,如下图所示。2自由度表示为: 车辆横线位置 y y y&#xff…

2023-2024-1 高级语言程序设计实验一: 选择结构

7-1 古时年龄称谓知多少? 输入一个人的年龄(岁),判断出他属于哪个年龄段 ? 0-9 :垂髫之年; 10-19: 志学之年; 20-29 :弱冠之年; 30-39 &#…

Docker开启远程访问+idea配置docker+dockerfile发布java项目

一、docker开启远程访问 1.编辑docker服务文件 vim /usr/lib/systemd/system/docker.servicedocker.service原文件如下: [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target docker.socke…

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--笔记

0. 内容 1. VIO回顾 整个视觉前端pipeline回顾: 两帧图像,可提取特征点,特征匹配(描述子暴力匹配或者光流)已知特征点匹配关系,利用几何约束计算relative pose([R|t]),translation只有方向&…

2023年中国睡眠检测仪产量、销量及市场规模分析[图]

睡眠检测仪行业是指生产和销售用于监测和评估人类睡眠质量和睡眠相关指标的设备和工具的行业。睡眠检测仪可以通过监测人体的脑电图、心率、呼吸、体动等生理信号,来评估睡眠的深度、时长、睡眠阶段的分布等信息,帮助人们了解自己的睡眠状况,…

一款轻量级事件驱动型应用程序框架

QP™/C 实时嵌入式框架 (RTEF) 是专为实时嵌入式 (RTE) 系统量身定制的活动对象计算模型的轻量级实现。QP 既是用于构建由活动对象(参与者)组成的应用程序的软件基础结构,也是用于以确定性方式执…

有更新:2023华为HCIA+HCIP最全Datacom题库解析(附全套文档赠送)

2023华为数通Datacom认证考试题库更新,答案解析: 1、所示的BGP/MPLS IP VPN场景,CE和PE之间运行0SPF协议,且区域号为0,当PE1和PE2的域标识符都为NULL时,PE2将向CE2发 送以下哪一类型的LSA? A.Type2 B.T…

了解三层架构:表示层、业务逻辑层、数据访问层

目录 背景: 三层架构 什么是三层: 分层的目的: 三层的结构关系​编辑 三层表现形式:​编辑 三层的优缺点: 总结: 背景: 三层架构是一种软件设计模式,可称为客户端-服务器-架构,把各个功能模块划分…