Python远程开关机

Python远程开关机

一、远程开机

  1. Python开机使用WOL技术即Wake-On-Lan,利用计算机在关机或休眠状态下,网卡及主板部分仍然有微弱的供电,当然需要保持电源供电,而且是有线连接。所以即便在关机状态下,网卡其实还是能够有一定的运作能力的,可以监听到计算机的网上广播信息,当发现特定格式的信息后就会执行开机。现在的主板基本都支持,只要在网络适配器属性中配置以太网属性勾选Microsoft网络客户端,在配置页面中启用唤醒魔包,电池管理允许计算机关闭此设备以节约电源不勾选。魔法数据包一般通过UDP进行广播,端口号一般是7或者9,魔法数据包总是以连续6个"FF",后面是MAC地址信息,一旦网卡侦测到数据包内容,就会唤醒目标计算机。
  2. 代码实现
import struct
import socket 
import time 
#通过ipconfig可以获得mac地址、IP地址
def wake_up(mac='XX-XX-XX-XX-XX-XX'): 
    MAC = mac
    BROADCAST = 'xx.xx.xx.xx'
    if len(MAC) != 17:
        raise ValueError('MAC地址输入错误!')
    mac_address = MAC.replace('-', '')
    data = ''.join(['FFFFFFFFFFFF', mac_address * 20])
    send_msg = b''
    for i in range(0, len(data), 2):
        send_data = b''.join([send_data, struct.pack('B', int(data[i:i+2], 16))])
    
    # 使用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.reason)

二、远程关机

  1. 远程关机实现较为简单,只需要启用一个服务,能够发送关机对应指令就行。

  2. 实现代码

import os
os.system("shutdown -s -t 60")  # 关机
os.system("shutdonw -r -t 100") # 重启
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值