色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python 遠(yuǎn)程開(kāi)關(guān)機(jī)的方法

瀏覽:31日期:2022-07-05 08:59:36

用 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ī)。現(xiàn)在的主板基本都支持。

只需要在網(wǎng)絡(luò)適配器屬性中配置下面兩個(gè)選項(xiàng)

Python 遠(yuǎn)程開(kāi)關(guān)機(jī)的方法

Python 遠(yuǎn)程開(kāi)關(guān)機(jī)的方法

下圖這個(gè)勾不能選上,我們要保證網(wǎng)卡在關(guān)機(jī)后仍有供電,如果你關(guān)機(jī)后,網(wǎng)口的燈不亮了,就不行了,要保持網(wǎng)口燈亮。

Python 遠(yuǎn)程開(kāi)關(guān)機(jī)的方法

這個(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)單:

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)) print('Done') except Exception as e: 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 osos.system(’shutdown -s -t 00’)

以上就是Python 遠(yuǎn)程開(kāi)關(guān)機(jī)的方法的詳細(xì)內(nèi)容,更多關(guān)于python 遠(yuǎn)程開(kāi)關(guān)機(jī)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩在线三级视频 | 一个人看的免费观看日本视频www | 欧美在线观看视频一区 | 99久久综合精品国产 | 综合在线视频 | 91大神在线精品视频一区 | 91亚洲最新精品 | 国产男人的天堂 | 99视频在线观看高清 | 牛人国产偷窥女洗浴在线观看 | 欧美自拍视频在线 | 欧美精品久久久久久久影视 | 久久精品免费观看 | 美女三级黄 | 欧美日本在线一区二区三区 | 国产精品资源在线 | 欧美黄色高清 | 18在线观看国内精品视频 | 国产精品免费aⅴ片在线观看 | 国产一级爱 | 91精品国产综合久久香蕉 | 成人精品视频 | 韩日三级视频 | 久久精品视频免费播放 | 久久国产精品久久精 | 美国毛片网站 | 俄罗斯美女毛片 | 国产在线精品一区二区不卡 | 亚洲精品综合一区二区三区 | 成人日韩在线观看 | 在线看国产| 日韩精品午夜视频一区二区三区 | 欧美在线做爰高清视频 | 亚洲欧美自拍一区 | 国产精品久久久久久久久岛 | 成人午夜做爰视频免费看 | 欧美日韩高清性色生活片 | 亚洲一区二区影院 | 高清一区二区三区四区五区 | 亚洲成年男人的天堂网 | 毛片一级免费 |