基于 Flask 的 Wake-on-LAN (WOL) Web 应用,专为软路由(OpenWrt/ImmortalWrt)设计,可通过 Web 界面检测服务器状态并远程唤醒。
- ✅ 服务器状态检测 - 实时检测目标服务器是否在线(支持 ping + TCP 端口双重检测)
- ✅ 一键远程唤醒 - 通过 WOL 魔术包远程唤醒服务器
- ✅ 登录认证 - 用户名密码保护,支持 Session 管理
- ✅ 防暴力破解 - 登录失败次数限制和 IP 锁定机制
- ✅ 现代化界面 - 响应式设计,支持移动端访问
- ✅ 自动刷新 - 每 10 秒自动检测服务器状态
- 系统: OpenWrt / ImmortalWrt 或其他 Linux 系统
- Python: 3.6+
- 内存: 最小 64MB 可用内存
- 网络: 与目标服务器在同一局域网
# 进入项目目录
cd AutoWol
# 安装 Python 依赖
pip3 install -r requirements.txt# 复制配置文件模板
cp config.py.example config.py
# 编辑配置文件
nano config.py必须修改的配置项:
# 目标服务器配置
TARGET_IP = '192.168.1.105' # 目标服务器的 IP 地址
TARGET_MAC = 'AA:BB:CC:DD:EE:FF' # 目标服务器的 MAC 地址
TARGET_PORT = 22 # 检测端口(SSH: 22, RDP: 3389, SMB: 445)
# Web 服务配置
FLASK_PORT = 5001 # Web 服务端口
# 安全配置
SECRET_KEY = 'your-random-key' # ⚠️ 修改为随机字符串
USERNAME = 'admin' # 登录用户名
PASSWORD = 'strong-password' # ⚠️ 修改为强密码如何获取 MAC 地址?
在目标服务器上执行:
- Windows:
ipconfig /all查看"物理地址" - Linux:
ip link或ifconfig查看 MAC 地址
# 方式 1: 直接运行
python3 app.py
# 方式 2: 使用启动脚本
./autowol.sh start打开浏览器访问:http://软路由IP:5001
例如:http://192.168.1.1:5001/login
# 启动服务
./autowol.sh start
# 停止服务
./autowol.sh stop
# 重启服务(修改代码后使用)
./autowol.sh restart
# 查看状态
./autowol.sh status# 实时查看日志
tail -f /var/log/autowol.log
# 查看最近 100 行
tail -100 /var/log/autowol.log# 编辑 rc.local
vi /etc/rc.local
# 在 exit 0 之前添加:
/root/code/AutoWol/autowol.sh start
# 保存后添加执行权限
chmod +x /etc/rc.local# 手动执行 rc.local 测试
/etc/rc.local
# 检查服务是否启动
/root/code/AutoWol/autowol.sh status1. BIOS 设置
- 进入 BIOS/UEFI 设置
- 启用 "Wake on LAN" 或 "Power On By PCI-E"
2. 网卡设置
- 打开"设备管理器" → 网络适配器
- 右键网卡 → 属性 → 电源管理
- ✅ 勾选"允许此设备唤醒计算机"
- ✅ 勾选"只允许幻数据包唤醒计算机"
- 高级选项卡 → "Wake on Magic Packet" 设为 Enabled
3. 关闭快速启动
- 控制面板 → 电源选项 → 选择电源按钮的功能
- ❌ 取消勾选"启用快速启动"
4. 使用"关机"而非"睡眠"
- WOL 仅在完全关机状态下有效
# 检查网卡是否支持 WOL
ethtool eth0 | grep Wake-on
# 启用 WOL
sudo ethtool -s eth0 wol g
# 持久化配置(添加到 /etc/rc.local)
echo "ethtool -s eth0 wol g" >> /etc/rc.local系统通过以下方式检测服务器状态:
- ICMP Ping - 优先使用 ping 检测
- TCP 端口连接 - ping 失败时尝试连接指定端口
常用检测端口:
22- SSH(Linux/开启 SSH 的 Windows)3389- RDP(Windows 远程桌面)445- SMB(Windows 文件共享)80/443- HTTP/HTTPS(Web 服务器)
修改检测端口:
在 config.py 中修改 TARGET_PORT:
TARGET_PORT = 22 # 改为你服务器开启的端口- 修改默认密码 - 使用强密码(至少 12 位,包含大小写、数字、特殊字符)
- 修改 SECRET_KEY - 使用随机字符串
- 限制访问 - 仅在内网使用,或配置防火墙规则
- 定期更新 - 定期更换密码
# 生成 SECRET_KEY
python3 -c "import secrets; print(secrets.token_hex(32))"# 检查端口是否被占用
netstat -tuln | grep 5001
# 检查 Python 版本
python3 --version
# 检查依赖是否安装
pip3 list | grep Flask- 确认目标服务器已启用 WOL(BIOS + 网卡设置)
- 确认 MAC 地址正确(不要输入 IP 地址)
- 确认服务器是"关机"状态(不是睡眠/休眠)
- 确认网线已连接(WiFi 通常不支持 WOL)
- 检查日志:
tail -f /var/log/autowol.log
- 确认
TARGET_PORT配置正确 - 确认目标端口已开放(防火墙)
- 尝试修改为其他端口:
# config.py
TARGET_PORT = 3389 # 尝试 RDP 端口AutoWol/
├── app.py # 主程序
├── config.py.example # 配置文件模板
├── autowol.sh # 服务管理脚本
├── requirements.txt # Python 依赖
├── templates/
│ ├── index.html # 主页面
│ └── login.html # 登录页面
└── README.md # 本文件
- 后端: Flask (Python)
- 前端: HTML5 + CSS3 + JavaScript
- 协议: Wake-on-LAN (Magic Packet)
- 认证: Flask Session + 防暴力破解
欢迎提交 Issue 和 Pull Request!
问题反馈: 如有问题,请检查配置文件和服务器端 WOL 设置。