首页 > 编程语言 >python之第三方库netifaces库:netifaces 模块用于提供有关网络接口及其状态的信息(①获取网络接口的名字,②根据接口名字获取ip地址,③获取路由信息)

python之第三方库netifaces库:netifaces 模块用于提供有关网络接口及其状态的信息(①获取网络接口的名字,②根据接口名字获取ip地址,③获取路由信息)

时间:2022-10-24 20:59:12浏览次数:50  
标签:ip 获取 地址 netifaces 路由 网络接口

前言

1、 在系统运维等过程中,网络永远是离不开的话题。网络中比较基础的是网络接口,每个网络接口都有一个名字,并且有它的ip地址,还有关于从这个接口出去的包的路由。我们可以把网络接口看作个数据模型,每个数据模型基本上有增删改查四种基本操作,(从网络接口这个数据模型的查引入python的 netifaces 库)

2、 netifaces 是一个非常简单好用的用来获取本机网卡信息的第三方库,如ip地址, MAC地址等等信息,支持Windows, Linux和MacOS。

安装

pip install netifaces

使用

1、获取当前操作系统的网络接口名字(获取当前主机所有的网卡设备)

①显示当前网络接口的信息:(linux操作系统命令)

ip link show

命令执行结果:

 

②netifaces 库提供了函数 interfaces() 用于返回所有接口的名字的列表。 

代码如下:

import netifaces

ifnames = netifaces.interfaces()

print(ifnames)

代码执行结果:

 

2、通过网络接口的名字获取该接口的IP地址

①只获取指定网络接口的ip地址:(linux操作系统命令)

ip addr show dev 网络接口名

命令执行结果:

②获取系统中所有的网络接口的ip地址:(linux操作系统命令)

ip addr show

命令执行结果:

③netifaces 库获取网络接口(网卡)ip地址使用 ifaddresses() 函数

  • 参数:系统中指定网络接口(网卡)的名字
  • 返回值:字典(包括ip地址)

代码如下:

import netifaces

Addr = netifaces.ifaddresses('enp2s0')

print(Addr)

代码执行结果:

返回值详解:

  • 数据类型:字典
  • 跟linux操作系统上执行ifconfig 命令的输出非常类似,其实就是对应网卡的所有信息,包括ip,mac,netmask等等。通过这些信息, 我们就可以解析出我们想得到的ip地址mac地址。
  • key值:netifaces.address_families 中映射中的值,比如上例中的17,对应的是AF_PACKET信息;2就是AF_INET也就是IPV4信息;10代表的就是AF_INET6就是IPV6信息。
  • 获取指定网络接口(网卡)的ipv4地址(衔接上诉代码): Addr[2][0]['addr'] 
  • import netifaces
    
    print(netifaces.address_families)

    运行结果:

④获取网络接口(网卡)的ip地址

代码如下:

import netifaces

ifnames = netifaces.interfaces()
print(ifnames)
print('\n')

for name in ifnames:
    ipAddr = netifaces.ifaddresses(name)
    print('网卡名:{0} && 网络接口地址信息:{1}'.format(name, ipAddr))
    print(ipAddr[2][0]['addr'])
    print('\n')

运行结果:

3、获取路由

①获取当前系统路由:(linux操作系统命令)

② netifaces 库使用 gateways() 函数获取当前系统的路由信息

代码如下:

import netifaces

routes = netifaces.gateways()

print(routes)

代码执行结果:

返回值详解:

数据类型为字典。

default 键指明该路由为默认路由信息。

值为根据类型返回的路由信息: 

key值是类型,例如:2代表AF_INET

172.16.0.1为路由地址

enp3s0为网络接口名字

True 是否是默认路由

 

标签:ip,获取,地址,netifaces,路由,网络接口
From: https://www.cnblogs.com/hls-code/p/16822740.html

相关文章

  • Python获取手机4K壁纸,一个入门练手的案例
    前言一.数据来源分析明确需求,我们采集网上什么数据内容,在什么地方分析我们想要高清原图在什么地方有浏览器自带工具:开发者工具F12鼠标右键点击......
  • Java反射获取方法参数名
      正常环境下,获取不到参数的名称,使用java反射时,第一个参数名是arg0,第二个参数是arg1,与我们代码中写的对不上。java反射过程中,需要我们做好判断:if(!parameter.isName......
  • 如何规范App广告的隐私获取,让用户拥有更多知情权?
    随着互联网的不断普及,越来越多老百姓使用智能设备触达互联网。但用户经常发现自己无意间提到的东西,打开App就收到相关产品的广告推送,甚至有人怀疑手机App是通过麦克风来窃......
  • 不依赖SDK的获取OAID -- OAIDHelper
    OAIDHelperOAID作为广告标识符,在OAID_SDK_1.0.25版本及以前支持直接使用,但1.0.25版本支持的设备覆盖不够全面,1.0.26版本及以后需要根据应用包名申请证书文件,且需要企业认......
  • nVisual二次开发——关于视图内对象的获取
    nVisual作为一个图形化管理软件,首要的是将视图内对象渲染出来,对象渲染的数据来源于diagram接口,本章小编带大家了解这个接口。​接口描述:传入视图节点id,获取视图属性、视图背......
  • jmeter中获取token和cookie
     ##登录获取token1.添加请求1.1输入接口中需要携带的参数的值   2.正则表达式提取器提取出值   3.输入token数据   "token":"(.+?)"......
  • Jmeter-3.Json提取器处理上下游传参(例如获取的token给下游使用)
    需要提取哪个请求产生的值,就在哪个请求上添加,例如在获取token的请求上,右键,添加--后置处理器--Json提取器  下游需要用的时候通过${}引用,例如添加会议室需要token ......
  • nginx获取客户端真实ip
    原网站在egg项目上线中,开发时使用 this.ctx.request.ip 就可以获取到ip地址,但是使用nginx代理过后用这个方法就获取不到客户端真实ip了,而是拿到的是代理服务器的ip地......
  • java后台远程调用获取文件
    模拟本地服务为文件服务器(两种提供方式):假设本地文件为服务器,提供文件获取服务方法一:直接将输出流放入response里面作为响应@RequestMapping(value="/getUrlDownload",m......
  • 十分钟带你搞懂Python获取网页信息
    Python爬虫的用处就不需要我多说了吧,今天就来带大家十分钟快速学会Python是如何爬取网页信息的,当然大家在爬取目标网页内容之前一定要遵守该网页的爬虫规则,以免带来不必要的......