你一定听说过或者练习过用Python关机,那么用Python开机呢?这是一个教你如何用Python启动的神奇方法。
本条的目的
远程开机原理
Python 远程开机代码实现
Python 关机说明
蟒蛇皮靴子
你是怎么用程序来引导的?这是WOL技术网络唤醒。电脑关机或休眠时,网卡和主板仍有微弱电源。当然,保持电源的插电和连线是必要的。因此,即使在电脑关机的情况下,网卡仍然具有一定的运算能力,可以在电脑外**互联网上广播的信息,当发现特定格式的信息时,就会开机。现在的主板基本都支持。
仅需要在网络适配器属性中配置以下两个选项
下图这个勾不能选上,我们要保证网卡在关机后仍有供电,如果你关机后,网口的灯不亮了,就不行了,要保持网口灯亮。下图的这个挂钩是不能选的。我们需要保证网卡关机后仍然有电源。如果你关机后网口的灯不亮,那就不行。保持网络端口的灯亮着。
这种特定的数据也有一个好听的名字叫魔术包。一般使用UDP协议进行广播。一般端口是7或者9。魔术包总是以”法国法郎法国法郎法国法郎法国法郎”六连胜“FF & # 8221,后面是MAC地址信息。一旦网卡检测到数据包内容,就会唤醒目标电脑。
让我们来看看如何编写代码。代码涉及UDP网络编程,后面会写。
这个函数只需要输入目标计算机的MAC地址。如果你在局域网内的另一台电脑上运行这个程序(当然如果你的电脑有公网IP,也可以在公网上使用),目标电脑可以自动启动。
代码如下。代码本身很短,原理也很简单:
def wake_up(request, ***c='DC-4A-3E-78-3E-0A'): MAC = ***c BROADCAST = "192.168.0.255" if len(MAC) != 17: raise ValueError("MAC address should be set as form 'XX-XX-XX-XX-XX-XX'") ***c_address = MAC.replace("-", '') data = ''.join(['FFFFFFFFFFFF', ***c_address * 20]) # 构造原始数据格式 send_data = b'' # 把原始数据转换为16进制字节数组, 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关闭
关机就容易多了,网上也有很多现成的解决方案。大部分都是用程序扫描邮箱。如果您收到带有关机相关关键字的电子邮件,程序将自动执行关机命令。
另外,如果只是在局域网内关机,或者有公共IP地址,也可以在本地电脑上设置一个服务,比如用Flask在端口5000上运行。给5000的地址发个指令就行了。
本地程序中需要关机命令。
import osos.system('shutdown -s -t 00')
本文来自傲娇小伙子投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/641420.html