远程开机基本原理
远程开机通称WOL(Woke on LAN),它是根据局域网络完成远程开机。大家只需了解某一台处在局域网络电子计算机的MAC地址,融合一定的手机软件,就能完成远程开机。它的工作中全过程是那样的:局域网络中的电子计算机处在待机情况,但它的网口处在监管情况,等候互联网启动的数据文件。一旦接到该数据文件,网口就能开启机箱电源完成启动。要唤起某一台电脑上务必了解该电脑上的序号,在沒有启动的情况下大家不太可能根据 IP或IP地址来区别电子计算机,但每一块网口都是有惟一的MAC地址,根据老师机向该网口传出“Wake up”的数据文件,该设备尽管处在待机情况,但网口上的集成ic能够根据三芯电极连接线得到开关电源,进而解决数据文件中的详细地址信息内容明确是不是启动,假如确定就根据三芯电极连接线向电子计算机传出启动数据信号。
硬件配置规定
远程开机的硬件配置规定
远程开机并并不是每一台电子计算机都能完成的,它对网口、电脑主板、开关电源都是有规定。
网口
网口是完成远程开机的一个最重要的原素,非是全部网口都适用远程开机。一些价格在50元上下的网口由于成本费比较有限,通常不兼容远程开机。现阶段较为时兴的STAR-901、STAR-902、D-Link530TX、想到LN-1068A等都适用远程开机。选购网口时我们可以向代理商资询。一般来说,适用远程开机的网口都是有三针的WOL插口(请见图1),并赠予一根三芯电极连接线,便于和电脑主板相互连接,另外还要留意一下产品手册。针对不兼容该作用的网口能够选购相一致的远程开机控制模块,实际效果是一样的。
电脑主板
电脑主板不兼容远程开机也是不好的。适用该作用的电脑主板上一般都是在PCI插槽周边有一个三芯电源插座用三芯电极连接线把网口和电脑主板相互连接。
要完成远程开机务必给网口开关电源,因为电子计算机处在待机情况,一般不可以根据PCI插槽给网口供电系统,因此 务必根据三芯电极连接线给网口电流量。而有一些全新的电脑主板(PCI2.2规范)在待机情况下可以给PCI开关电源,因此 这类电脑主板就沒有必需设三芯电源插座了。
设定CMOS的有关主要参数
自然,大家还必须设定一下CMOS的有关主要参数。启动按住Delete键进到CMOS设定页面,寻找“Power Management Setup”电池管理莱单,回车键进到子莱单,寻找“Wake up Events”,回车键后寻找“Wake up on LAN/Ring”选择项,将“Disabled”改成“Enabled”。储存撤出CMOS设定。
python编码完成
from optparse import OptionParser
import socket
import struct
def wake(addr, mac):
mac_data = []
for i in range(0, 12, 2):
mac_data.append(int(mac[i:i 2], 16))
packet = struct.pack("!BBBBBB", 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
packet_mac = struct.pack("!BBBBBB", *mac_data)
for i in range(0, 16):
packet = packet_mac
#print "len: ", len(packet), "data: ", packet
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
try:
s.sendto(packet, addr)
print "唤起数据文件推送进行", addr, mac
finally:
s.close()
def main():
usage = "%prog [options]"
parser = OptionParser(usage = usage)
parser.add_option("-a", "--addr", dest="addr", help="Boardcast address", metavar="255.255.255.255")
parser.add_option("-p", "--port", dest="port", help="Port", metavar="7")
parser.add_option("-m", "--mac", dest="mac", help="MAC address", metavar="FF-FF-FF-FF-FF-FF")
(options, args) = parser.parse_args()
if not options.mac:
parser.print_help()
return
addr = "255.255.255.255"
port = 7
mac = options.mac.replace("-", "")
if options.addr:
addr = options.addr
if len(mac) != 12:
print "失效的MAC地址: %s" % options.mac
return
if options.port:
port = int(options.port)
wake((addr, port), mac)
if __name__ == "__main__":
main()