Python 遠端開關機的方法

2022-10-04 13:27:25 字數 1919 閱讀 6719

用 python 關機你肯定聽過或者實踐過,那麼用 python 開機呢?這是乙個神奇的方法,教你如何用 python 來開機。

github 倉庫位址:

本文目標

python 開機

關於用程式來開機,是怎麼做到的呢?這就是 wol 技術 wake-on-lan, 利用計算機在關機或休眠狀態時,網絡卡及主機板部分仍然有微弱的供電,當然要保持電源是插上的,而且是有線連線。所以即使在關機情況下,網絡卡還是有一定運作能力的,可以監聽計算機外部的網上廣播資訊,當發現特定格式的資訊後就會執行開機。現在的主機板基本都支援。

只需要在網路介面卡屬性中配置下fwsraf面兩個選項

下圖這個勾不能選上,我們要保證網絡卡在關機後仍有供電,如果你關機後,網口的燈不亮了,就不行了,要保持網口燈亮。

這個特定資料也有個好聽的名字叫 magic packe魔法資料報)。一般用過 udp 協議進行廣播。埠一般是7或者9. 魔法資料報總是以"ff ff ff ff ff ff" 連續6個 "ff",後面是 mac 位址資訊,一旦網絡卡偵測到資料報內容,就會喚醒目標計算機。

我們還是來看一下**怎麼寫,**涉及到 udp 網路程式設計這塊,後面會專門寫寫網路程式設計這塊內容。

此函式只需輸入目標計算機的 mac 位址即可,在區域網中(當然,如果你的計算機有公網ip,那麼在公網中也是可以的)另一台計算機上執行此程式,目標計算機即可自動開機。

**如下,**本身很短,原理也很簡單:

def wake_up(mac='dc-4a-3e-78-3e-0a'):

mac = mac

broadcast = "192.168.0.255"

if len(mac) != 17:

raise valueerror("mac address should be set as form 'xx-xx-xx-xx-xfwsrafx-xx'")

mac_address = mac.replace("-", '')

data = ''.join(['ffffffffffff', mac_address * 20]) # 構造原始資料格式

send_data = b''

# 把原始資料轉換為16進製制位元組陣列,

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)

# 通過socket廣播出去,為避免失敗,間隔廣播三次

try:

sock = socket.socket(socket.af_inet, socket.sock_dgram)

sock.setsockopt(socket.sol_socket, socket.so_broadcast, 1)

socwww.cppcns.comk.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)

python 關機

關機來說相對就容易多了,網上也有很多現成的解決方案。大多數是用程式掃瞄郵箱,如果收到關機相關關鍵詞的郵件,則程式自動執行關機命令。

另外如果只是在區域網裡實現關機,或者你有公網 ip 位址的話,也可以在本地計算機起乙個服務,比如用 flask 執行在5000埠。向5000這個位址傳送指令即可。

本機程式中需要有一條執行關機的命令即可

import os

os.system('shutdown -s -t 00')

利用uefi進行遠端開關機

關機模式下,bios的電源管理選單下有remote wake up或wake on lan等類似選項的電腦才支援遠端開機,若無此選項則不支援遠端開機。假如remote wake up開啟後不支援遠端開機,請諮詢硬體提供商 通常到 power managment 電源管理 下尋找如下列選項 boot ...

CentOS開關機命令

shutdown,poweroff,reboot,halt,init都可以進行關機,大致用法。sbin halt n w d f i p h sbin reboot n w d f i sbin poweroff n w d f i h root linux reboot h usage reboo...

開關機命令詳解

1.shutdownshutdown 引數說明 t 在改變到其它runlevel之前 告訴init多久以後關機。r 重啟計算器。k 並不真正關機 只是送警告訊號給每位登入者 login h 關機後關閉電源 halt n 不用init 而是自己來關機。不鼓勵使用這個選項 而且該選項所產生的後果往往不總...