首页 > 编程语言 >python 获取本机IP

python 获取本机IP

时间:2024-01-30 10:16:11浏览次数:37  
标签:socket python IP 获取 地址 netifaces 模块 本机

python获取本机所有IP地址的方法

原链接:https://pythonjishu.com/gygjrclwnkmhnlf/ 2023年5月23日 下午12:35 • python

获取本机所有 IP 地址的方法,可以通过 Python 标准库中的 socket 模块来实现。下面是完整攻略:

1. 使用 socket 模块

先导入 socket 模块,然后创建一个 socket 对象。使用 gethostname() 方法获取主机名,然后使用 getaddrinfo() 方法获取本机 IP 地址信息,进而获得本机所有 IP 地址。

示例代码如下:

import socket

# 获取本机所有 IP 地址
hostname = socket.gethostname()
ip_list = []
# 获取IP地址信息
addr_infos = socket.getaddrinfo(hostname, None)
for addr in addr_infos:
    ip_list.append(addr[4][0])

print(ip_list)

示例输出:

['192.168.1.101', 'fe80::fc4d:b2de:d449:2f5d']

以上代码可以获取本机所有的IPv4和IPv6地址。

2. 使用 netifaces 模块

还可以使用第三方模块 netifaces 包来获取本机 IP 地址。该模块提供了一个 interfaces() 方法,可以返回本机所有网络接口信息。然后使用 ifaddresses() 方法获取每个接口的 IP 地址信息。

示例代码如下:

import netifaces

# 获取本机所有 IP 地址
ip_list = []
for interface in netifaces.interfaces():
    # 获取当前网络接口的所有地址
    addrs = netifaces.ifaddresses(interface)
    # 获取IPv4地址
    if netifaces.AF_INET in addrs:
        for addr_dict in addrs[netifaces.AF_INET]:
           ip_list.append(addr_dict['addr'])

print(ip_list)

示例输出:

['192.168.1.101']

以上示例代码只能获取本机的IPv4地址。

总结

使用 socket 模块和 netifaces 模块都可以获取本机所有的 IP 地址。socket 模块不依赖任何第三方模块;而 netifaces 模块需要安装,但是可以灵活控制获取到的 IP 地址类型。

标签:socket,python,IP,获取,地址,netifaces,模块,本机
From: https://www.cnblogs.com/mmld/p/17995859

相关文章

  • python中with的用法
    一、文件操作#自行车f=open("filename")f.write()f.close()上述代码存在的问题:(1)直接open()打开需要手动关闭,并且容易忘记关闭(2)当文件操作出现异常导致程序提早离开,而没有执行关闭文件操作#小轿车try:f=open("xxx")f.write()#文件操作except:doso......
  • mips交叉编译相关库文件,主要做以后参考
    1.mips交叉编译paho-mqtt3ascmake-DCMAKE_INSTALL_PREFIX=${pwd}/install-DPAHO_WITH_SSL=TRUE-DPAHO_BUILD_SAMPLES=TRUE-DCMAKE_C_COMPILER=/opt/mips-linux-gnueabihf/bin/mips-linux-gnu-gcc-DPAHO_BUILD_DOCUMENTATION=TRUE-DOPENSSL_LIB_SEARCH_PATH=/usr/mips/lib......
  • Python中__init__.py的作用
    Pytorch学习笔记-(__init__)_pytorch3.8的init文件-CSDN博客 (推荐)Python:__init__.py的作用-知乎(zhihu.com) (推荐)Python中的__init__.py与模块导入___init__.py导入自定义py-CSDN博客你常常看到的__init__.py到底是个啥?-知乎(zhihu.com) 总结一下Python中__ini......
  • 46从零开始用Rust编写nginx,数据还能这么传,多层代理(IP多级代理)搭建
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,负载均衡,静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmpro......
  • swiper实现滚动效果
    css.swiper-wrapper{-webkit-transition-timing-function:linear;/*之前是ease-out*/-moz-transition-timing-function:linear;-ms-transition-timing-function:linear;-o-transition-timing-function:linear;......
  • llama-recipes fine-tuning 3
    multipleGPUsinsinglenodeclicktoviewthecodetorchrun--nnodes1--nproc_per_node2examples/finetuning.py--enable_fsdp--use_peft--peft_methodlora--datasetmedcqa_dataset--model_namemeta-llama/Llama-2-7b-hf--fsdp_config.pure_bf16--output......
  • [Typescript 5] infer Constraints
    Sincetypescript5,weareabletoaddconstraintsoverinfer.Followingcodedoesn'tapplyconstraints,sotheinferredelementcouldbe stringand numbertypeGetFirstStringIshElement<T>=Textendsreadonly[inferS,..._:any[]]?S:n......
  • IDS与IPS
    一、入侵检测系统IDS入侵检测系统IDS(IntrusionDetectionSystems),依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。如:假如防火墙是一幢大楼的门锁,那么IDS就是大楼里......
  • python第五节:集合set(3)
    集合遍历for循环遍历集合中元素例子1:set1={'a','b','cde','张三','123'} foriinset1:   print(i) 结果:acdeb张三123 enumerate遍历索引和元素例子2:set1={'a','b','cde','张三','123'} forin......
  • 【容斥反演】Nanami and Trip Schemes Count Problem
    链接给定\(k\)个特殊格子,求从(1,1)往右或往上走到(n,m),在经过不超过\(p\)个特殊格的情况下的方案数设\(f(S)\)表示钦定走S集合中格子的方案,\(g(S)\)为恰好走S集合的方案,那么\(f\)与\(g\)的关系就是一个\(\subseteq\)意义下的前缀和。即\[f(S)=\sum_{S\subs......