用 Python 關(guān)機(jī)你肯定聽(tīng)過(guò)或者實(shí)踐過(guò)十拣,那么用 Python 開(kāi)機(jī)呢?這是一個(gè)神奇的方法,教你如何用 Python 來(lái)開(kāi)機(jī)惫皱。
本文目標(biāo)
遠(yuǎn)程開(kāi)機(jī)原理
Python 遠(yuǎn)程開(kāi)機(jī)代碼實(shí)現(xiàn)
Python 關(guān)機(jī)說(shuō)明
Python開(kāi)機(jī)
關(guān)于用程序來(lái)開(kāi)機(jī),是怎么做到的呢尤莺?這就是 WOL 技術(shù) Wake-On-Lan, 利用計(jì)算機(jī)在關(guān)機(jī)或休眠狀態(tài)時(shí)旅敷,網(wǎng)卡及主板部分仍然有微弱的供電,當(dāng)然要保持電源是插上的颤霎,而且是有線(xiàn)連接媳谁。所以即使在關(guān)機(jī)情況下涂滴,網(wǎng)卡還是有一定運(yùn)作能力的,可以監(jiān)聽(tīng)計(jì)算機(jī)外部的網(wǎng)上廣播信息晴音,當(dāng)發(fā)現(xiàn)特定格式的信息后就會(huì)執(zhí)行開(kāi)機(jī)柔纵。
現(xiàn)在的主板基本都支持。 只需要在網(wǎng)絡(luò)適配器屬性中配置下面兩個(gè)選項(xiàng)
下圖這個(gè)勾不能選上锤躁,我們要保證網(wǎng)卡在關(guān)機(jī)后仍有供電搁料,如果你關(guān)機(jī)后,網(wǎng)口的燈不亮了系羞,就不行了郭计,要保持網(wǎng)口燈亮。
這個(gè)特定數(shù)據(jù)也有個(gè)好聽(tīng)的名字叫 Magic Packet(魔法數(shù)據(jù)包)觉啊。一般用過(guò) UDP 協(xié)議進(jìn)行廣播拣宏。端口一般是7或者9. 魔法數(shù)據(jù)包總是以"FF FF FF FF FF FF" 連續(xù)6個(gè) "FF",后面是 MAC 地址信息,一旦網(wǎng)卡偵測(cè)到數(shù)據(jù)包內(nèi)容杠人,就會(huì)喚醒目標(biāo)計(jì)算機(jī)勋乾。
我們還是來(lái)看一下代碼怎么寫(xiě),代碼涉及到 UDP 網(wǎng)絡(luò)編程這塊嗡善,后面會(huì)專(zhuān)門(mén)寫(xiě)寫(xiě)網(wǎng)絡(luò)編程這塊內(nèi)容辑莫。 此函數(shù)只需輸入目標(biāo)計(jì)算機(jī)的 MAC 地址即可,在局域網(wǎng)中(當(dāng)然罩引,如果你的計(jì)算機(jī)有公網(wǎng)IP各吨,那么在公網(wǎng)中也是可以的)另一臺(tái)計(jì)算機(jī)上運(yùn)行此程序,目標(biāo)計(jì)算機(jī)即可自動(dòng)開(kāi)機(jī)袁铐。
代碼如下揭蜒,代碼本身很短,原理也很簡(jiǎn)單:
Python關(guān)機(jī)
關(guān)機(jī)來(lái)說(shuō)相對(duì)就容易多了剔桨,網(wǎng)上也有很多現(xiàn)成的解決方案屉更。大多數(shù)是用程序掃描郵箱,如果收到關(guān)機(jī)相關(guān)關(guān)鍵詞的郵件洒缀,則程序自動(dòng)執(zhí)行關(guān)機(jī)命令瑰谜。
另外如果只是在局域網(wǎng)里實(shí)現(xiàn)關(guān)機(jī),或者你有公網(wǎng) IP 地址的話(huà)树绩,也可以在本地計(jì)算機(jī)起一個(gè)服務(wù)萨脑,比如用 Flask 運(yùn)行在5000端口。向5000這個(gè)地址發(fā)送指令即可饺饭。 本機(jī)程序中需要有一條執(zhí)行關(guān)機(jī)的命令即可