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

news2024/9/28 15:27:04

文章目录

  • 使用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 psutil

connections = psutil.net_connections()

for conn in connections:
    print(conn)

在这里插入图片描述

过滤特定状态的连接

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

import psutil

connections = 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 psutil

interfaces = 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 psutil

io_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 psutil

addrs = 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.coloradmin.cn/o/1078147.html

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

相关文章

C200/10/1/1/1/00 VPM04D300000 VDM01U30AL00

C200/10/1/1/1/00 VPM04D300000 VDM01U30AL00 受其客户对集成、远程和日益自主的运营的关注,横河于2022年6月6日推出了OpreX Asset Health Insights,以使资产数据更加可见、集成和可操作。 Asset Health Insights的原始版本支持Amazon Web Services和…

县域农牧业信息化项目建设技术解决方案(完整版本)

扫码关注下方公众号,免费获取项目建设方案!↓↓↓ 文章目录 一、项目背景二、项目建设意义及目标三、建设内容(1)XX智慧养殖管理 SaaS 云平台(2)XX智慧养殖管理平台(3)XX投入品质量…

一款基于javafx的自有IP地址查询工具

SelfIPAdressQuery 使用场景 在攻防演习中、hvv防守方人员会封禁大量IP地址,人员疏忽会导致自有地址被封禁,可以使用此工具进行批量筛选自有地址. IP地址归属批量查询. 功能介绍 通过IP地址查询数据库中符合的自有IP地址或自有IP段,不存在的IP地址通过离线模式或联网模式查…

进阶JAVA篇-深入了解枚举与抽象枚举

目录 介绍一下枚举: 1.1枚举的概念 1.2具体如何来使用呢? 1.3对枚举小结 1.4抽象枚举概念 1.5对抽象枚举小结 介绍一下枚举: 1.1枚举的概念 在JAVA中,枚举是一种特殊的类,用于定义一组常量。Java中的枚举类型是通过使用…

spring IOC AOP核心思想

我的理解:一开始各个对象之间相互合作,是多个对象对应多个对象去使用,如果有一个对象出现问题就可能影响到全局,但是使用ioc就是在两者之间加入了一个中间媒介(spring bean也就是通过xml配置文件装配对象),如果相互需要…

pytorch中nn.DataParallel多次使用

pytorch中nn.DataParallel多次使用 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader# 定义模型 class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.fc nn.Linear(10, 1)def forwa…

Filebeat、metricbeat、kafka

kibana机子上安装filebrat(因为有nginx) 上传filebrat包 在es概览查看 上传metricbeat 排错 tailf !$ Kibana-Vlsualize查看 kafka(卡夫卡) kafka是一个分布式的消息发布—订阅系统(kafka其实是消息队列)消息队列中间件 Kafka的…

二十、SpringCloud Alibaba Seata处理分布式事务

目录 一、分布式事务问题1、分布式之前2、分布式之后 二、Seata简介1、Seata是什么?2、Seata能干嘛?3、去拿下?4、怎么玩 三、Seata-server安装四、订单、库存、账户业务数据库准备五、订单、库存、账户业务微服务准备六、Seata原理介绍 一、…

查杀Linux服务器病毒进程并对Linux中的文件描述符FD进行简单探索

一直以来,我都十分推崇把看到的理论知识与实际相结合。 在今天查杀服务器病毒程序的过程中,顺便挖掘了一些新的知识,现在把他总结成一篇文章记录一下。 每一个进程都有一个文件描述符表(通过lsof -p 进程号),文件描述表是操作系统…

web基础以及http协议

web基础,http协议 域名:www.88886.co DNS解析 静态页面 动态页面 DNS域名: 网络上的通信都是基于IP通信模式:TCP/IP TCP建立连接和断开连接,都是要双方进行确认的 建立连接:三次握手 断开连接&#x…

.net mvc 无法创建虚拟目录和无法启动IIS Express Web服务器指定的url无效 解决方法

.net mvc 无法创建虚拟目录 修改项目配置中web中的项目url时,提示无法创建虚拟目录,则把ip地址改为localhost再进行创建即可 无法启动IIS Express Web服务器指定的url无效 解决方法 不要勾选【覆盖应用程序根URL(U)】,或让【覆盖…

js中进行数字,超大金额(千位符)格式化处理

前言 最近遇到一个需求,对于社区里讨论的帖子展示一个访问量的计数显示问题,当超过多少页面访问量时,就让其显示xxx万,xx亿 对于后台返回该字段的数据类型是number,需要进行格式化数字的输出 这个应用场景在前端开发中其实很普遍,例如:音乐app里面音乐歌曲播放数量,微博里的…

Unity中Shader的Lambert光照的实现

文章目录 前言一、分别获取Lambert光照模型的每个参数Lambert光照模型公式1、使用 Unity 封装的参数 unity_AmbientSky 获取环境光色2、在属性面板定义一个float类型参数作为光照系数3、获取主平行光的颜色4、获取世界空间下的顶点法向量5、获取反射点指向光源的向量6、使用Lam…

C++day04(类中特殊成员函数、匿名对象、友元、常成员函数和常对象、运算符重载)

1> 思维导图 2> 整理代码 代码&#xff1a; 算术运算符重载&#xff1a; #include <iostream>using namespace std; class Person {//全局函数实现运算符重载需要权限friend const Person operator(const Person L,const Person R); private:int a;int b; publi…

基于Springboot实现点餐平台网站管理系统项目【项目源码+论文说明】分享

基于Springboot实现点餐平台网站管理系统演示 摘要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多商家的之中&#xff0c;随之就产生了“点餐平台网站”&#xff0c;这样就让点餐平台网站更加方便简单。 对于本…

泛函的含义,泛函分析

经常有同事和朋友讨论泛函分析是做什么的&#xff0c;所以做个小log 1. 泛函的含义 泛函的含义&#xff0c;笼统说&#xff0c;泛函是符合某种性质的任意函数&#xff1b;因为是任意的&#xff0c;所以就是泛泛的&#xff1b;但也没有不着边际的泛。 2. 泛函的例子 2.1 符合半…

uniapp+vue3+ts+uview-plus搭建项目步骤

创建项目 使用Vue3/Vite版&#xff0c;创建以 typescript 开发的工程 下载仓库 DCloud/uni-preset-vue - Gitee.com node版本&#xff1a;v16.18.0 npm版本&#xff1a; v8.19.2 依赖下载 解压之后&#xff0c;在vscode打开 通过终端运行 npm 命令下载依赖&#xff1a;npm ins…

1. Windows平台下如何编译C++版本的Redis库hiredis

Redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持push/pop、add/remove及取交集并…

Java中的抽象类和接口(Abstract Class and Interface)的区别

在Java面向对象编程中&#xff0c;总会用到接口和抽象类&#xff0c;他们都是对事物的一种抽象&#xff0c;有一些共同点但是也有很多区别。 接口Interface 在Java中接口需要用interface关键字定义&#xff0c;他是对一种行为的抽象&#xff0c;是一种约定的协议&#xff0c;…

微信小程序通过 movable-area 做一个与vuedraggable相似的上下拖动排序控件

因为只是做个小案例 我就直接代码写page页面里了 其实很简单 组件稍微改一下就好了 wxss /* 设置movable-area的宽度 */ .area{width: 100%; }/* a b c 每条元素的样式 */ movable-view {width: 100%;background-color: red;height: 40px;line-height: 40px;color: #FFFFFF;tex…