当前位置: 首页 > news >正文

python psutil库之——获取网络信息(网络接口信息、网络配置信息、以太网接口、ip信息、ip地址信息)

文章目录

  • 使用Python psutil库获取网络信息
    • 安装psutil库
    • 获取网络连接信息
      • 查看所有网络连接
      • 过滤特定状态的连接
    • 获取网络接口信息
    • 获取网络IO统计信息
      • 实例1
      • 实例2
    • 总结

使用Python psutil库获取网络信息

Python的psutil库是一个跨平台库,能够方便地获取系统使用情况和运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。本文将简单介绍如何使用psutil库获取网络信息。

安装psutil库

在开始之前,首先需要安装psutil库。可以通过pip命令进行安装:

pip install psutil

加速安装用:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple psutil

获取网络连接信息

查看所有网络连接

我们可以使用psutil.net_connections()方法来获取所有网络连接信息。这个方法返回一个列表,每个元素都是一个pconn对象,该对象表示一个网络连接,并有以下属性:

  • fd:套接字文件描述符
  • family:地址家族
  • type:地址类型
  • laddr:本地地址
  • raddr:远程地址
  • status:状态
  • pid:创建套接字的进程ID

下面的代码将列出所有网络连接:

import psutilconnections = psutil.net_connections()for conn in connections:print(conn)

在这里插入图片描述

过滤特定状态的连接

也可以通过过滤特定状态的连接来查找所需的网络连接。例如,要查找所有ESTABLISHED状态的连接,可以使用以下代码:

import psutilconnections = psutil.net_connections()
established_connections = [conn for conn in connections if conn.status == psutil.CONN_ESTABLISHED]for conn in established_connections:print(conn)

在这里插入图片描述

获取网络接口信息

psutil库还提供了一个名为net_if_addrs()的函数,该函数用于获取网络接口信息。这个函数返回一个字典,每个元素都是一个snic对象,表示一个网络接口,并有以下属性:

  • family:地址家族
  • address:IP地址
  • netmask:网络掩码
  • broadcast:广播地址
  • ptp:点对点连接

下面的代码将列出所有网络接口及其详细信息:

import psutilinterfaces = psutil.net_if_addrs()for name, addrs in interfaces.items():print(f"Interface {name}:")for addr in addrs:print(f"  {addr}")

(信息敏感不予展示)

获取网络IO统计信息

psutil库的net_io_counters()函数可以获取网络IO统计信息,返回一个pnicstats对象,该对象表示一个网络IO统计信息,并有以下属性:

  • bytes_sent:发送的字节数
  • bytes_recv:接收的字节数
  • packets_sent:发送的数据包数
  • packets_recv:接收的数据包数
  • errin:输入错误
  • errout:输出错误
  • dropin:丢弃的输入数据包
  • dropout:丢弃的输出数据包

实例1

下面的代码将列出所有网络接口的网络IO统计信息:

import psutilio_stats = psutil.net_io_counters(pernic=True)for name, stats in io_stats.items():print(f"Interface {name}:")print(f"  Bytes sent: {stats.bytes_sent}")print(f"  Bytes received: {stats.bytes_recv}")print(f"  Packets sent: {stats.packets_sent}")print(f"  Packets received: {stats.packets_recv}")

在这里插入图片描述

实例2

下面代码会打印机器上每个网络接口的IP地址、子网掩码和广播地址等信息:

import psutiladdrs = psutil.net_if_addrs()for interface_name, interface_addresses in addrs.items():for address in interface_addresses:if str(address.family) == 'AddressFamily.AF_INET':print(f"=== Interface: {interface_name} ===")print(f"  IP Address: {address.address}")print(f"  Netmask: {address.netmask}")print(f"  Broadcast IP: {address.broadcast}")elif str(address.family) == 'AddressFamily.AF_PACKET':print(f"=== Interface: {interface_name} ===")print(f"  MAC Address: {address.address}")print(f"  Netmask: {address.netmask}")print(f"  Broadcast MAC: {address.broadcast}")

(信息敏感不予展示)

总结

本文详细介绍了如何使用psutil库获取网络信息,包括如何查看所有网络连接、过滤特定状态的连接、获取网络接口信息和获取网络IO统计信息。这些功能使得psutil库成为一个强大的工具,可以帮助我们更好地理解和监控系统的网络活动。

参考资料:

  • Python psutil documentation
  • Python for System Administrators
  • Monitoring with Python
http://www.lryc.cn/news/189450.html

相关文章:

  • uniapp上echarts地图钻取
  • scratch保护环境 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析
  • RPC分布式网络通信框架项目
  • Navicat如何连接远程服务器的MySQL
  • 【计算机网络笔记】计算机网络的结构
  • 排序算法-插入排序法(InsertSort)
  • RuntimeError: “slow_conv2d_cpu“ not implemented for ‘Half‘
  • 前端 | 前端工程化
  • 学信息系统项目管理师第4版系列24_整合管理
  • 轻量级虚拟化技术草稿
  • bootz启动 Linux内核过程中涉及的 do_bootm_states 函数
  • springcloud学习笔记(3)-服务管理组件Nacos
  • Insight h2database 更新、读写锁以及事务原理
  • skywalking动态配置[集成nacos/apollo/consul]
  • UniApp创建项目HelloWorld
  • Qt/C++原创推流工具/支持多种流媒体服务/ZLMediaKit/srs/mediamtx等
  • 学习黑马程序员JavaScript总结
  • 浅谈高速公路服务区分布式光伏并网发电
  • MATLAB算法实战应用案例精讲-【图像处理】机器视觉(番外篇)
  • 塑胶材料检测对激光焊机的作用
  • 将Eureka服务注册到Eureka中心
  • 将网站域名访问从http升级到https(腾讯云/阿里云)
  • QT通过TCP协议发送结构体数据
  • C++标准库之numeric
  • 第六章:最新版零基础学习 PYTHON 教程—Python 正则表达式(第二节 - Python 中的正则表达式与示例套装)
  • 【Python】WebUI自动化—Selenium的下载和安装、基本用法、项目实战(16)
  • c++视觉处理---图像重映射
  • 基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)
  • Insight h2database 执行计划评估以及 Selectivity
  • [天翼杯 2021]esay_eval - RCE(disabled_function绕过||AS_Redis绕过)+反序列化(大小写wakeup绕过)