美文网首页
树莓派实现远程开机局域网电脑(WOL协议+华硕主板)

树莓派实现远程开机局域网电脑(WOL协议+华硕主板)

作者: 一如既往而已 | 来源:发表于2019-10-13 23:35 被阅读0次

    树莓派实现远程开机局域网电脑(WOL协议+华硕主板)

    一、环境准备

    确保设备同一局域网中
    树莓派:192.168.31.81 (操作机器)

    window 10 Desktop: 192.168.31.201 (被唤醒对象,需要使用改网卡地址,最好路由绑定IP,方便使用)

    二、系统设置网卡可以唤醒

    image.png

    其实这里的【允许计算机关闭此设备以节约电源】根据实际情况勾选,经过测试我的主板必须要选择,否则关机后网卡不是常亮状态导致一直无法唤醒。

    image image

    三、配置BIOS

    进入BIOS

    image

    image

    image

    四、用PuTTY登录树莓派

    • 方式一:使用etherwake 命令唤醒

    1.下载etherwake

      sudo apt-get install etherwake
    

    2.使用命令唤醒:

      sudo etherwake 9c:5c:8e:d1:52:d1
    
    image.png

    注意:上面为MAC地址

    • 方式二:使用直接使用脚本唤醒
      1.创建如下脚本(记得修改为自己的IP的mac 地址)

    vim ./start_wol_win10.sh

    #!/usr/bin/env python3
    # coding:utf-8
    import socket
    import binascii
    import re
    #定义一个函数,默认MAC地址为欲唤醒电脑的MAC地址(WIN系统可通过ipconfig获取)
    def wakeup(mac='F4-4D-30-73-87-E7',ip='192.168.2.255'):
        #利用正则判断MAC地址是否合法
        if re.match(r"([0-9a-fA-F]{2}(-|:){0,1}){5}([a-fA-F0-9]{2})",mac) and (len(mac) == 12 or len(mac) == 17):
            #去掉MAC地址里的:和-
            mac = mac.replace('-','').replace(':','').upper()
            #IP地址可以是具体某个IP或者是一个广播地址,端口一般为9
            IP,port=ip,9
            s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
            s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
            #转换编码,唤醒数据包为FFFFFFFFFFFF+MAC地址重复16次+密码
            send_data=binascii.unhexlify('FF' * 6 + mac.upper() * 20)
            s.sendto(send_data,(IP,port))
            s.close()
            print("向"+mac+"发送唤醒包成功!")
        else:
            print("MAC address ERROR")
    wakeup(mac='9C-5C-8E-D1-52-D1',ip='192.168.31.201')
    

    2.执行命令唤醒:

      sudo chmod +x start_wol_win10.sh
      sudo ./start_wol_win10.sh
    
    image.png

    相关文章

      网友评论

          本文标题:树莓派实现远程开机局域网电脑(WOL协议+华硕主板)

          本文链接:https://www.haomeiwen.com/subject/taxlmctx.html