成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

Miracle_lihb / 3272人閱讀

摘要:大多數(shù)是用程序掃描郵箱,如果收到關(guān)機(jī)相關(guān)關(guān)鍵詞的郵件,則程序自動執(zhí)行關(guān)機(jī)命令。本機(jī)程序中需要有一條執(zhí)行關(guān)機(jī)的命令即可

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

GitHub 倉庫地址:https://github.com/injetlee/Python/tree/master/Python%20%E9%BB%91%E9%AD%94%E6%B3%95

本文目標(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ī)在關(guān)機(jī)或休眠狀態(tài)時,網(wǎng)卡及主板部分仍然有微弱的供電,當(dāng)然要保持電源是插上的,而且是有線連接。所以即使在關(guān)機(jī)情況下,網(wǎng)卡還是有一定運(yùn)作能力的,可以監(jiān)聽計算機(jī)外部的網(wǎng)上廣播信息,當(dāng)發(fā)現(xiàn)特定格式的信息后就會執(zhí)行開機(jī)?,F(xiàn)在的主板基本都支持。

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

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

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

我們還是來看一下代碼怎么寫,代碼涉及到 UDP 網(wǎng)絡(luò)編程這塊,后面會專門寫寫網(wǎng)絡(luò)編程這塊內(nèi)容。
此函數(shù)只需輸入目標(biāo)計算機(jī)的 MAC 地址即可,在局域網(wǎng)中(當(dāng)然,如果你的計算機(jī)有公網(wǎng)IP,那么在公網(wǎng)中也是可以的)另一臺計算機(jī)上運(yùn)行此程序,目標(biāo)計算機(jī)即可自動開機(jī)。

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

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)

    # 通過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)鍵詞的郵件,則程序自動執(zhí)行關(guān)機(jī)命令。
另外如果只是在局域網(wǎng)里實(shí)現(xiàn)關(guān)機(jī),或者你有公網(wǎng) IP 地址的話,也可以在本地計算機(jī)起一個服務(wù),比如用 Flask 運(yùn)行在5000端口。向5000這個地址發(fā)送指令即可。
本機(jī)程序中需要有一條執(zhí)行關(guān)機(jī)的命令即可

import os
os.system("shutdown -s -t 00")

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44837.html

相關(guān)文章

  • CentOS 下使用 Pipenv + Gunicorn + Supervisor 部署 Flask

    摘要:根據(jù)中華人民共和國信息產(chǎn)業(yè)部第十二次部務(wù)會議審議通過的非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù)備案管理辦法精神,在中華人民共和國境內(nèi)提供非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù),應(yīng)當(dāng)辦理備案。未經(jīng)備案,不得在中華人民共和國境內(nèi)從事非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù)。 當(dāng)我們開發(fā)了一個簡單的 Flask 程序,想把項目部署上線,我們可以選擇傳統(tǒng)的部署方式或者云部署方式把項目部署上線。在本文中,筆者將使用 阿里云輕量應(yīng)用服務(wù)器 安裝 C...

    anyway 評論0 收藏0
  • 網(wǎng)絡(luò)喚醒的配置好麻煩?沒關(guān)系這里有其他簡單的遠(yuǎn)程開機(jī)方法!

    摘要:前面億元程序員傾心為我們講解網(wǎng)絡(luò)喚醒的配置方法實(shí)現(xiàn)遠(yuǎn)程開機(jī),有的小伙伴就很苦惱了這也太麻煩了吧所以,有沒有其他簡單的遠(yuǎn)程開機(jī)方法呢下面,我們跟隨億元程序員來一起看下。需要開啟網(wǎng)絡(luò)喚醒功能。不過最后還是推薦網(wǎng)絡(luò)喚醒,一次配置,一直受用。 ...

    Neilyo 評論0 收藏0
  • 快速搭建 kvm web 管理工具 WebVirtMgr

    摘要:作者運(yùn)維博客博客地址文章地址相關(guān)話題是近兩年來發(fā)展較快,比較活躍,非常清新的一個管理平臺,提供對宿主機(jī)和虛機(jī)的統(tǒng)一管理,它有別于自帶的圖形管理工具,讓管理變得更為可視化,對中小型應(yīng)用場景帶來了更多方便。作者:SRE運(yùn)維博客博客地址: https://www.cnsre.cn/文章地址:https://www.cnsre.cn/posts/211117937177/相關(guān)話題:https://w...

    番茄西紅柿 評論0 收藏2637

發(fā)表評論

0條評論

Miracle_lihb

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<