摘要:大多數(shù)是用程序掃描郵箱,如果收到關(guān)機(jī)相關(guān)關(guān)鍵詞的郵件,則程序自動(dòng)執(zhí)行關(guān)機(jī)命令。本機(jī)程序中需要有一條執(zhí)行關(guān)機(jī)的命令即可
用 Python 關(guān)機(jī)你肯定聽(tīng)過(guò)或者實(shí)踐過(guò),那么用 Python 開(kāi)機(jī)呢?這是一個(gè)神奇的方法,教你如何用 Python 來(lái)開(kāi)機(jī)。
GitHub 倉(cāng)庫(kù)地址:https://github.com/injetlee/Python/tree/master/Python%20%E9%BB%91%E9%AD%94%E6%B3%95
本文目標(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)然要保持電源是插上的,而且是有線連接。所以即使在關(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ī)?,F(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ì)專門(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)單:
import socket import struct 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-XX-XX"") mac_address = MAC.replace("-", "") data = "".join(["FFFFFFFFFFFF", mac_address * 20]) # 構(gòu)造原始數(shù)據(jù)格式 send_data = b"" # 把原始數(shù)據(jù)轉(zhuǎn)換為16進(jìn)制字節(jié)數(shù)組, 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) # 通過(guò)socket廣播出去,為避免失敗,間隔廣播三次 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)) # return HttpResponse() print("Done") except Exception as e: # return HttpResponse() print(e)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 地址的話,也可以在本地計(jì)算機(jī)起一個(gè)服務(wù),比如用 Flask 運(yùn)行在5000端口。向5000這個(gè)地址發(fā)送指令即可。
本機(jī)程序中需要有一條執(zhí)行關(guān)機(jī)的命令即可
import os os.system("shutdown -s -t 00")
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/44837.html
摘要:根據(jù)中華人民共和國(guó)信息產(chǎn)業(yè)部第十二次部務(wù)會(huì)議審議通過(guò)的非經(jīng)營(yíng)性互聯(lián)網(wǎng)信息服務(wù)備案管理辦法精神,在中華人民共和國(guó)境內(nèi)提供非經(jīng)營(yíng)性互聯(lián)網(wǎng)信息服務(wù),應(yīng)當(dāng)辦理備案。未經(jīng)備案,不得在中華人民共和國(guó)境內(nèi)從事非經(jīng)營(yíng)性互聯(lián)網(wǎng)信息服務(wù)。 當(dāng)我們開(kāi)發(fā)了一個(gè)簡(jiǎn)單的 Flask 程序,想把項(xiàng)目部署上線,我們可以選擇傳統(tǒng)的部署方式或者云部署方式把項(xiàng)目部署上線。在本文中,筆者將使用 阿里云輕量應(yīng)用服務(wù)器 安裝 C...
摘要:前面億元程序員傾心為我們講解網(wǎng)絡(luò)喚醒的配置方法實(shí)現(xiàn)遠(yuǎn)程開(kāi)機(jī),有的小伙伴就很苦惱了這也太麻煩了吧所以,有沒(méi)有其他簡(jiǎn)單的遠(yuǎn)程開(kāi)機(jī)方法呢下面,我們跟隨億元程序員來(lái)一起看下。需要開(kāi)啟網(wǎng)絡(luò)喚醒功能。不過(guò)最后還是推薦網(wǎng)絡(luò)喚醒,一次配置,一直受用。 ...
摘要:作者運(yùn)維博客博客地址文章地址相關(guān)話題是近兩年來(lái)發(fā)展較快,比較活躍,非常清新的一個(gè)管理平臺(tái),提供對(duì)宿主機(jī)和虛機(jī)的統(tǒng)一管理,它有別于自帶的圖形管理工具,讓管理變得更為可視化,對(duì)中小型應(yīng)用場(chǎng)景帶來(lái)了更多方便。作者:SRE運(yùn)維博客博客地址: https://www.cnsre.cn/文章地址:https://www.cnsre.cn/posts/211117937177/相關(guān)話題:https://w...
閱讀 2120·2019-08-30 15:53
閱讀 3117·2019-08-30 15:44
閱讀 2976·2019-08-30 14:11
閱讀 2965·2019-08-30 14:01
閱讀 2769·2019-08-29 15:16
閱讀 3866·2019-08-29 13:10
閱讀 1296·2019-08-29 10:56
閱讀 2584·2019-08-26 13:58