Python 實現遠程開關電腦

一、Python開機

1、介紹

這裡首先介紹 WOL 技術 Wake-On-Lan, 他是利用計算機在關機或休眠狀態時,給網卡和主板都有部分微弱電流,前提是電源是插上的,而且該電腦是有線連接,這樣即使是關機狀態是都可以堅挺外部的廣播信息。

2、設置

在網絡適配器當中進行一些配置,去掉“允許計算機關閉此設備節約電源”

Python 實現遠程開關電腦

Python 實現遠程開關電腦

Python 實現遠程開關電腦

上面圖片當中的魔法數據包一般是指用過 UDP 協議進行廣播並且端口一般是7或者9。魔法數據包總是以"FF FF FF FF FF FF" 呈現,後面是 MAC 地址信息,一旦網卡偵測到數據包內容,就會喚醒目標計算機。

3、代碼展示

<code>

import

time

import

socket

import

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

i

in

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

Exception

as

e: print(e)

if

__name__ ==

'__main__'

wake_up()/<code>

二、Python關機

<code>import 

os

os

.system(

'shutdown -s -t 00'

)/<code>


分享到:


相關文章: