You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何监听以太网适配器状态变化并触发对应事件

实现方案

第一步:安装依赖库

我们用psutil库跨平台获取网卡状态,执行以下命令安装:
pip install psutil

第二步:核心代码实现

逻辑为常驻后台轮询网卡状态,和上一次的状态做对比,发生up/down变化时触发对应的操作,你可以自行修改回调函数里的自定义逻辑。

import psutil
import time

# 替换成你要监控的以太网适配器名称
# Windows可在 控制面板\网络和 Internet\网络连接 里查看,一般叫「以太网」
# Linux一般是eth0、enpXsX这类名称,可通过ip addr命令查看
MONITOR_IFACE = "以太网"
# 轮询间隔,单位秒,1秒基本能满足实时性需求,占资源极低
CHECK_INTERVAL = 1

def on_interface_down():
    """以太网断开时触发的操作,可自定义"""
    print("检测到以太网断开,执行断开后逻辑")
    # 这里写你要执行的操作,比如发通知、启动备份程序等等

def on_interface_up():
    """以太网连接时触发的操作,可自定义"""
    print("检测到以太网连接成功,执行连接后逻辑")
    # 这里写你要执行的操作

def get_iface_status(iface_name):
    """获取指定网卡的状态,返回True为up,False为down"""
    all_interfaces = psutil.net_if_stats()
    if iface_name not in all_interfaces:
        # 未找到对应网卡,默认返回断开状态
        return False
    return all_interfaces[iface_name].isup

if __name__ == "__main__":
    # 初始化上一次的状态
    last_status = get_iface_status(MONITOR_IFACE)
    print(f"启动监控,初始状态:{'连接' if last_status else '断开'}")
    while True:
        current_status = get_iface_status(MONITOR_IFACE)
        # 状态发生变化时触发对应逻辑
        if current_status != last_status:
            if current_status:
                on_interface_up()
            else:
                on_interface_down()
            # 更新状态记录
            last_status = current_status
        time.sleep(CHECK_INTERVAL)

第三步:配置后台运行

  • Windows平台:可以用nssm工具把这个Python脚本注册成系统服务,开机自动启动,后台静默运行
  • Linux/Mac平台:可以写systemd服务配置,或者直接用nohup python 你的脚本名.py &命令后台挂起运行

扩展说明

  • 如果需要监控所有以太网接口,不要指定单个MONITOR_IFACE,遍历psutil.net_if_stats()的结果,过滤出以太网类型的接口批量监控即可
  • 轮询间隔可以根据你的需求调整,对实时性要求不高的话可以调到5-10秒,进一步降低资源占用

内容的提问来源于stack exchange,提问作者CaptainRubbish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:39:04