背景
毕竟网络靠不住,原本打算通电自启动的。
还有一个是网络自启动是需要有线网络连接的。不然关机怎么可能有网络连接,咋自启动?
坑点
我搜了很多“[我的品牌型号] + 通电自启动”,很多个回答,教我怎么做——没用。因为都是复制粘贴的答案。
一开始我进BIOS,只是发现和百度的教程不一样,因为BIOS系统都不一样。当时只是以为可能复制粘贴也没太大问题,能理解教程里面的设置顺序和逻辑即可。
不是的,我在我的BIOS里面找了很久,最后又搜了好一阵,才发现——我的型号就根本不支持通电启动:
一开始就是错的
我都已经买了智能插座了😡😡😡不只是浪费时间啊,我是花了钱的😡😡😡
然后又搜了很久的设置WOL自启动的,其实也没正经的正确答案。但是好歹自己是电脑人,理解原理完也是花了点功夫才设置好。
备选方案
工具
在线
Depicus - Wake on Lan Over The Interweb
Python
库
wakeonlan
脚本
#!/usr/bin/env python
# coding=utf-8
import socket
import sys
def to_hex_int( s ):
return int( s.upper() , 16 )
dest = ('192.168.1.255' , 9)
if len( sys.argv ) < 2:
print( "usage: %s <MAC Address to wakeup>" % sys.argv[0] )
sys.exit()
mac = sys.argv[1]
spliter = ""
if mac.count( ":" ) == 5: spliter = ":"
if mac.count( "-" ) == 5: spliter = "-"
if spliter == "":
print( "MAC address should be like XX:XX:XX:XX:XX:XX / XX-XX-XX-XX-XX-XX" )
sys.exit()
parts = mac.split( spliter )
a1 = to_hex_int( parts[0] )
a2 = to_hex_int( parts[1] )
a3 = to_hex_int( parts[2] )
a4 = to_hex_int( parts[3] )
a5 = to_hex_int( parts[4] )
a6 = to_hex_int( parts[5] )
addr = [a1 , a2 , a3 , a4 , a5 , a6]
packet = chr( 255 ) + chr( 255 ) + chr( 255 ) + chr( 255 ) + chr( 255 ) + chr( 255 )
for n in range( 0 , 16 ):
for a in addr:
packet = packet + chr( a )
packet = packet + chr( 0 ) + chr( 0 ) + chr( 0 ) + chr( 0 ) + chr( 0 ) + chr( 0 )
s = socket.socket( socket.AF_INET , socket.SOCK_DGRAM )
s.setsockopt( socket.SOL_SOCKET , socket.SO_BROADCAST , 1 )
s.sendto( packet , dest )
print( "WOL packet %d bytes sent !" % len( packet ) )
执行代码
# 使用方法为命令行下执行(linux/Mac可以不需要写命令最开始的python)
python ./wol.py 01:02:03:04:05:06