日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

用 Python 關(guān)機(jī)你肯定聽過或者實(shí)踐過,那么用 Python 開機(jī)呢?這是一個(gè)神奇的方法,教你如何用 Python 來開機(jī)。

本文目標(biāo)

  • 遠(yuǎn)程開機(jī)原理
  • Python 遠(yuǎn)程開機(jī)代碼實(shí)現(xiàn)
  • Python 關(guān)機(jī)說明

Python 開機(jī)

關(guān)于用程序來開機(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)聽計(jì)算機(jī)外部的網(wǎng)上廣播信息,當(dāng)發(fā)現(xiàn)特定格式的信息后就會(huì)執(zhí)行開機(jī)。

現(xiàn)在的主板基本都支持。 只需要在網(wǎng)絡(luò)適配器屬性中配置下面兩個(gè)選項(xiàng)

Python 遠(yuǎn)程開機(jī)

 


Python 遠(yuǎn)程開機(jī)

 

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

Python 遠(yuǎn)程開機(jī)

 

這個(gè)特定數(shù)據(jù)也有個(gè)好聽的名字叫 Magic Packet(魔法數(shù)據(jù)包)。一般用過 UDP 協(xié)議進(jìn)行廣播。端口一般是7或者9. 魔法數(shù)據(jù)包總是以"FF FF FF FF FF FF" 連續(xù)6個(gè) "FF",后面是 mac 地址信息,一旦網(wǎng)卡偵測到數(shù)據(jù)包內(nèi)容,就會(huì)喚醒目標(biāo)計(jì)算機(jī)。

我們還是來看一下代碼怎么寫,代碼涉及到 UDP 網(wǎng)絡(luò)編程這塊,后面會(huì)專門寫寫網(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)開機(jī)。 視頻如下:

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

def wake_up(request, 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)

    # 通過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ī)來說相對就容易多了,網(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')

本文分享自微信公眾號(hào) - 智能制造社區(qū)(zhinengzhizao)

分享到:
標(biāo)簽:Python
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定