使用Debian服务器通过WOL唤醒Win11执行Python程序的方案

利用您现有的Debian服务器作为”唤醒中心”,可以完美实现每日凌晨1点自动唤醒Win11电脑执行Python程序。以下是详细方案:

一、准备工作:配置Win11电脑支持Wake-on-LAN

  1. 启用网卡的WOL功能
    • 以管理员身份打开PowerShell
    • 执行 Get-NetAdapter 查看网卡名称
    • 执行 Enable-NetAdapterPowerManagement -Name "以太网" -WakeOnMagicPacket $true (替换为您的网卡名称)
    • 或通过设备管理器:网络适配器 → 右键属性 → 电源管理 → 勾选”允许此设备唤醒计算机”和”只允许魔术包唤醒计算机”
  2. 获取Win11电脑的MAC地址
    • 在Win11上执行 ipconfig /all,记录物理地址(MAC地址)
  3. 配置路由器
    • 确保两台电脑在同一局域网,或配置路由器允许WOL包跨子网传输
    • 为Win11电脑设置静态IP或DHCP保留

二、在Debian服务器上设置定时唤醒任务

  1. 安装WOL工具
    sudo apt update
    sudo apt install wakeonlan
    
  2. 创建唤醒脚本 (/usr/local/bin/wake_win11.sh):
    #!/bin/bash
    # 替换为Win11电脑的实际MAC地址
    wakeonlan 00:11:22:33:44:55
    # 等待电脑启动(根据您的电脑启动时间调整)
    sleep 90
    
  3. 设置定时任务
    sudo crontab -e
    

    添加以下行(每天凌晨1点执行):

    0 1 * * * /usr/local/bin/wake_win11.sh
    
  4. 设置脚本权限
    sudo chmod +x /usr/local/bin/wake_win11.sh
    

三、在Win11上配置自动运行Python程序并关机

  1. 创建批处理文件 (C:\Scripts\run_and_shutdown.bat):
    @echo off
    echo 开始执行Python程序 [%date% %time%] >> C:\Scripts\log.txt
    python "C:\Path\To\Your\Script.py" >> C:\Scripts\log.txt 2>&1
    echo 程序执行完成,准备关机 [%date% %time%] >> C:\Scripts\log.txt
    timeout /t 10 /nobreak >nul
    shutdown /s /t 30 /c "Python程序执行完成,30秒后自动关机"
    
  2. 创建计划任务
    • 以管理员身份运行PowerShell
    • 执行以下命令创建任务:
    $action = New-ScheduledTaskAction -Execute "C:\Scripts\run_and_shutdown.bat"
    $trigger = New-ScheduledTaskTrigger -AtStartup
    $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfOnBatteries -StartWhenAvailable
    $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
    Register-ScheduledTask -TaskName "AutoRunPythonScript" -Action $action -Trigger $trigger -Settings $settings -Principal $principal
    

四、验证与故障排除

  1. 测试WOL功能
    • 手动关闭Win11电脑
    • 在Debian服务器上执行 wakeonlan 您的MAC地址
    • 观察Win11电脑是否能正常唤醒
  2. 测试整个流程
    • 修改Debian上的cron任务为几分钟后执行
    • 观察完整流程是否正常工作
  3. 常见问题解决
    • 无法唤醒:检查BIOS/UEFI中是否启用WOL;某些笔记本需要接通电源才能使用WOL
    • 程序未运行:检查计划任务是否配置为SYSTEM权限运行;查看日志文件排查错误
    • 无法关机:确保计划任务有足够权限执行关机命令

附加建议

  1. 增加可靠性
    • 在Debian服务器上添加监控脚本,检查Win11是否已成功启动和执行程序
    • 配置邮件或Telegram通知,任务完成后发送执行结果
  2. 节能优化
    • 在Win11电源选项中设置较短的不活动自动睡眠时间
    • 考虑使用shutdown /h代替shutdown /s让电脑进入休眠而非完全关机,可加快下次启动速度

此方案利用您现有的Debian服务器作为控制中心,无需依赖Win11电脑的BIOS定时开机功能,适用于大多数不支持定时开机的笔记本电脑。

发表回复

Scroll to top