admin 管理员组

文章数量: 1184232

0. 实现效果图与概览

效果图:

概览:
[手机/外部设备]
       ↓ 访问
 [公网IP:5000/wake](ps如果不做第四部分就没有这一层)
       ↓ 映射
  [路由器NAT转发][树莓派 Flask 服务器]
       ↓ 发 magic packet
[宿舍电脑] ←←← 被唤醒

1. 被唤醒的机子上进行设置

这里分两步:

(1)在windows可视化界面进行设置

这一步的图片教程详见这段后面贴的链接

(2)命令行输入命令

被唤醒的机子上输入命令

# 以管理员身份运行 CMD
netsh -c "interface ipv4" add neighbors <idx> <IP> <MAC>

# 示例:
netsh -c "interface ipv4" add neighbors 5 192.168.10.102 E4-60-xx-xx-xx-xx

(其中:

idx获取方式:

以管理员身份运行cmd→键入 netsh i i show in ,记住正在使用的网卡idx

IP是正在使用网卡的IP地址,

mac可通过ipconfig /all查询)

原文链接:https://blog.csdn/m0_37728676/article/details/120724647)

2. 在树莓派上进行的操作

手动的方式(原理):
  1. 使用sudo apt-get install wakeonlan命令安装wakeonlan;
  2. 通过wakeonlan xx:xx:xx:xx:xx:xx命令发送唤醒包对被控电脑进行真实局域网WOL测试(xx代指被控电脑MAC地址)。
程序的方式:

(1) 运行python脚本(作用是监听一个端口, 响应唤醒请求)

from flask import Flask
import os
import logging
from datetime import datetime

app = Flask(__name__)

# 设置日志输出到文件
logging.basicConfig(
    filename='/home/pi/logs/wol.log',    # 改成你想存放的位置
    level=logging.INFO,
    format='%(asctime)s %(levelname)s: %(message)s'
)

@app.route('/wake')
def wake():
    logging.info("get request")
    result = os.system("wakeonlan E4:60:17:xx:xx:xx")//这里写你要被唤醒的机子的物理地址
    if result == 0:
        logging.info("Magic Packet send success")
        return "success"
    else:
        logging.error("failed")
        return "failed"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

(2) keepAlive脚本(作用是 万一上面的服务因为一些小概率事件关闭之后 我们不用手动去启动)

放在你想放的路径下

如/home/pi/pathToYourScripts

#!/bin/bash

if pgrep -f wol_server > /dev/null; then
    echo "$(date): wol running"
else
    echo "$(date): wol restarting..."
    cd /home/pi/pathToYourScripts/wol-py
    nohup python3 wol_server.py > /home/pi/code/wol-py/log.txt 2>&1 &
fi

(3) 添加定时任务自动运行keepAlive脚本

输入crontab -e

按如图格式加入刚才写的那个脚本(其中 ***** * * * * 意思是每分钟执行一次 也可以按照需要修改)

#!/bin/bash
* * * * *  /bin/bash /home/pi/scripts/keepAlive/wolServer.sh >> /home/pi/logs/cron.log 2>&1
然后就可以通过访问[树莓派ip:5000/wake] (如 192.168.12.103:5000/wake)来进行唤醒了
以校园网为例子, 被唤醒的机器是宿舍电脑, 树莓派和宿舍电脑连接同一个Wi-Fi, 目前实现的是能够在连接这个宿舍Wi-Fi之后访问url进行唤醒

如果想要在宿舍之外的地方连校园网 访问url进行唤醒, 需要进行路由器的配置(看下一段 )

3. 路由器ip映射和端口映射

  • ip映射

    校园网分配给路由器的ip 10.150.xxx.xxx 映射到 路由器分配到本机的ip192.168.10.xxx

  • 端口映射

    路由器外部端口也绑定到你服务的端口

  • 绑定ip和mac地址

    这样路由器分配给你的ip就不会变了

( 在路由器管理页面找, tplink入口如下图)

原文链接:https://blog.csdn/sinat_41680617/article/details/147372648

https://blog.csdn/sinat_41680617/article/details/147372648?spm=1011.2124.3001.6209

到目前为止, 你就可以在[能连上校园网的地方]通过访问[你路由器的ip:5000/wake]来进行唤醒了

4. 做校园网穿透

有公网ip的可以用公网ip做转发, 实现在任何网络下都可以访问 域名:5000/wake来进行唤醒

这一步的教程链接:暂空

5. iPhone配置快捷指令

完成啦^ ^

本文标签: 一键 指令 快捷 新手 教程