用树莓派实现远程唤醒

本文介绍了如何利用树莓派和Wake-On-Lan(WOL)技术实现远程唤醒电脑。通过开启主板WOL功能,创建包含特定MAC地址的magic packet,并使用flask构建WEB服务端,即使在没有公网IP的情况下,也能通过端口映射或花生壳等工具实现远程开机。
摘要由CSDN通过智能技术生成

由于偶尔要在外远程连接家里的电脑,家里的电脑一直都是开着的。电脑长期开着,有很长一段时间都是空闲的,不仅浪费电也会影响到硬件的寿命,因此希望能远程遥控,在有需要的时候唤醒主机。

通过查找资料,发现电脑主板是支持WOL(Wake-On-Lan)唤醒。在开启主板的WOL功能后,网卡会监听连路上的数据包,如果接收到特定的数据包,则唤醒主机。

这种数据包叫做magic packet,通常通过UDP协议承载,使用的端口号为7或者9。Magic packet包内容前6个字节为FF FF FFFF FF FF,紧跟着是16次要唤醒主机网卡的MAC地址,有6*12=72个字节。例如网卡MAC地址为D4:3D:7A:11:2E:B7,则magic packet包的内容为:

FF FF FF FF FFFF D4 3D 7A 11 2E B7 D4 3D 7A 11 2E B7

D4 3D 7A 11 2E B7D4 3D 7A 11 2E B7 D4 3D 7A 11 2E B7

D4 3D 7A 11 2E B7D4 3D 7A 11 2E B7 D4 3D 7A 11 2E B7

D4 3D 7A 11 2E B7D4 3D 7A 11 2E B7 D4 3D 7A 11 2E B7

D4 3D 7A 11 2E B7D4 3D 7A 11 2E B7 D4 3D 7A 11 2E B7

D4 3D 7A 11 2E B7D4 3D 7A 11 2E B7

在这里使用WEB进行控制,使用flask作为WEB的服务端。如果宽带拨号拿到的是公网IP,在路由器上设置端口映射后就可以通过浏览器实现远程开机。如果拿不到公网IP,可以通过花生壳一类的软件实现公网访问。

代码:

 app.py

# -*- coding:utf-8 -*-
from flask import Flask,render_template,request,jsonify
import re
import socket
import struct

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/wake', methods=['POST'])
def wake():
    response = {}

    try:
        mac = request.values.get('mac_addr')
        if
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值