一、Python開機
1、介紹
這裡首先介紹 WOL 技術 Wake-On-Lan, 他是利用計算機在關機或休眠狀態時,給網卡和主板都有部分微弱電流,前提是電源是插上的,而且該電腦是有線連接,這樣即使是關機狀態是都可以堅挺外部的廣播信息。
2、設置
在網絡適配器當中進行一些配置,去掉“允許計算機關閉此設備節約電源”
上面圖片當中的魔法數據包一般是指用過 UDP 協議進行廣播並且端口一般是7或者9。魔法數據包總是以"FF FF FF FF FF FF" 呈現,後面是 MAC 地址信息,一旦網卡偵測到數據包內容,就會喚醒目標計算機。
3、代碼展示
<code>import
timeimport
socketimport
os
def
wake_up
(mac=
'AD-BA-3A-56-6E-0B'
): MAC = mac BROADCAST ="192.168.x.xxx"
if
len(MAC) !=17
:raise
ValueError("MAC地址應設置為'XX-XX-XX-XX-XX-XX-XX-XX'這樣的格式"
) mac_address = MAC.replace("-"
,''
) data =''
.join(['FFFFFFFFFFFF'
, mac_address *20
]) send_data =b''
for
iin
range(0
, len(data),2
): send_data =b''
.join([send_data, struct.pack('B'
, int(data[i: i +2
],16
))]) print(send_data)try
: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1
) sock.sendto(send_data, (BROADCAST,7
)) time.sleep(1
) sock.sendto(send_data, (BROADCAST,7
)) time.sleep(1
) sock.sendto(send_data, (BROADCAST,7
)) print("Done"
)except
Exceptionas
e: print(e)if
__name__ =='__main__'
wake_up()/<code>
二、Python關機
<code>importos
os
.system('shutdown -s -t 00'
)/<code>