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


    使用Python psutil库获取网络信息

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

    安装psutil库

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

    pip install psutil
    
    • 1

    加速安装用:

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

    获取网络连接信息

    查看所有网络连接

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

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

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

    import psutil
    
    connections = psutil.net_connections()
    
    for conn in connections:
        print(conn)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    过滤特定状态的连接

    也可以通过过滤特定状态的连接来查找所需的网络连接。例如,要查找所有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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    获取网络接口信息

    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}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (信息敏感不予展示)

    获取网络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}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    实例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}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    (信息敏感不予展示)

    总结

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

    参考资料:

  • 相关阅读:
    Oracle数据库之日期查询
    mmap 创建共享内存映射
    flume1.11.0安装部署
    企业APP软件定制开发的关键步骤|网站小程序搭建
    requestAnimationFrame实现vue虚拟滚动插件
    Java NIO,Selector机制源码分析
    因果图,鱼骨图,石川图
    第一步使用jupyter使用pytorch前奏 安装anaconda cuda pytorch
    .NET开发中合理使用对象映射库,简化和提高工作效率
    多任务系统(操作系统)
  • 原文地址:https://blog.csdn.net/Dontla/article/details/133747421