Python远程开关机_python wol-程序员宅基地

技术标签: 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") # 重启
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dolly_baby/article/details/126633945

智能推荐

【C++】最通俗的多态、虚表、虚指针讲解_虚表指针-程序员宅基地

文章浏览阅读2.9k次,点赞26次,收藏82次。多态需要两个特性:(1)方法重写(override):父类与子类具有函数签名完全相同的方法。(2)向上类型转换(upcasting):用一个父类指针指向子类对象的时候,假如调用的是虚函数,会自动暂时将该指针转换为子类类型的指针。虚函数的存在就是为了类型转换,即使没有虚函数也能重写方法。虚函数并不是为了解决函数重写问题的。假如你去在父类和子类中都写上函数签名相同的方法,同样也能重写函数。例如 我们先写一个没有虚函数的例子结果为是完全没问题的!是的,即使不加virtual,也能实现方法重写!假如我用子类_虚表指针

【FFmpeg】ffmpeg命令详解(一)_ffmpeg -vf命令-程序员宅基地

文章浏览阅读5k次。1、命令格式ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...global_options:全局选项input_file_options:输入文件相关的选项output_file_options:输出文件相关的选项-i input_url:输入文件,可以有多个输入文件,每个输入文件前都要加“-i”选项output_url:输出文件2、简述_ffmpeg -vf命令

emWin 学习使用笔记 (3)_emwin demo-程序员宅基地

文章浏览阅读130次。原来想既然STemWin对此要求不高,随便找个版本就行,从VC6.0到VC2015,结果遇到莫名奇妙的许多问题(可能不是正版造成的吧),后来去微软官网下载了VC2022的专业版又有1个月的使用限制,唉!简单使用的方法,使我们对STemWin快捷的感受了一下它的尊容。实际它的内容还很丰富!要想达到能做点事的水平,需要踏踏实实的学习一番。StemWin提供了丰富的DEMO例程,重点就是学这个啦!该公司做了大量的编写及归纳整理工作,实际这里的基本就够啦。(1) 笔记本或一台电脑,我用的Win10。_emwin demo

【jQuery 冻结任意行列】冻结任意行和列的jQuery插件-程序员宅基地

文章浏览阅读417次。 实现原理:创建多个div,div之间通过css实现层叠,每个div放置当前表格的克隆。例如:需要行冻结时,创建存放冻结行表格的div,通过设置z-index属性和position属性,让冻结行表格在数据表格的上层。同理,需要列冻结时,创建存放冻结列表格的div,并放置在数据表格的上层。如果需要行列都冻结时,则除了创建冻结行、冻结列表格的div,还需要创建左上角的固定行列表格的d..._列冻结列解冻jquery

第二周项目4求一个正整数的各位数字之和_输入一个整数求各位数字之和时间复杂度-程序员宅基地

文章浏览阅读1.2k次。问题及描述:/* *Copyright(c++)2015,烟台大学计算机学院 *All rights reserved, *文件名称:test.cpp *作 者:程梦莹 *完成日期:2015年9月12日 *版本号:v1.0 *问题描述:计算任一输入的正整数的各位数字之和,并分析算法的时间复杂度 *输入描述:一个整数 */#include_输入一个整数求各位数字之和时间复杂度

微型计算机原理与接口实验报告,微型计算机原理及接口技术实验报告.docx-程序员宅基地

文章浏览阅读3.6k次。成都理工大学微型计算机原理及接口技术实验报告学 院 : 核技术与自动化工程学院专 业 : 电气工程及其自动化班 级 :学 号 :姓 名 :指导老师 :完成时间 :实验一 EMU 8086软件的使用1、实验目的通过对emu8086的使用,来理解《微型计算机原理及接口技术》课本上的理论知识,加深对知识的运用,以及emu8086交互式学习汇编语言(Assembly ..._微机原理与接口技术emu8086课题总结

随便推点

西电软件体系结构——01绪论-程序员宅基地

文章浏览阅读288次。课程简介软件体系结构的主题是针对复杂软件系统的高层结构、组织单元之间的相互关系的描述,以及围绕这种描述开展的各项活动,如设计、评估、实现、管理等。课程目标_西电软件体系结构

Job for mysqld.service failed because the control process exited with error code-程序员宅基地

文章浏览阅读1k次。initialize specified but the data directory has files in it.”意思是初始化数据目录时发现目录里面有文件,可能原因是之前运行过命令目录中已生成文件。只要我们找到MySQL的数据目录并删除里面的文件即可解决。datadir是我们安装MySQL时默认指定的存放文件的数据目录,进入文件中删除里面的目录即可。网上搜了一下绿线标注部分语句,说是缺少libaio这个包,那就装一下。PS:如果我的方法没用的话可以试试网上说的修改文件权限的方法。_job for mysqld.service failed because the control process exited with error

老司机必备的手机浏览器,比UC浏览器还好用_比uc好用的手机浏览器-程序员宅基地

文章浏览阅读1w次。各位听得最多的段子:老司机们,上车了。没错,不管是在电脑端还是移动端,都需要一款好用的浏览器。那么,老司机们都用什么浏览器,什么样的浏览器才是老司机必备的浏览器呢?来咯,这些手机浏览器比UC浏览器还好用,功能可媲美桌面浏览器,一起来看看吧。_比uc好用的手机浏览器

7-35 jmu-Java&Python-统计文字中的单词数量并按出现次数排序-程序员宅基地

文章浏览阅读1.3k次。7-35 jmu-Java&Python-统计文字中的单词数量并按出现次数排序_jmu-java&python-统计文字中的单词数量并按出现次数排序

C语言——三位数的百位,十位,个位分别输出_输入一个三位数,输出它的百位,十位,个位-程序员宅基地

文章浏览阅读3.5w次,点赞16次,收藏39次。b=number/10%10=520/10%10=52%10,“%”是取余符号,即52%10=5*10余2,%符号取得就是这个2。a=number/100=520/100,如果是正常计算的话应该等于5.2,但是“a”是int型属于整形,也就是说取它的整数部分。c=number%10;printf("百位数是%d\n",a);printf("十位数是%d\n",b);printf("个位数是%d\n",c);printf("请输入一个三位数\n");..._输入一个三位数,输出它的百位,十位,个位

Android Reveal圆形Activity转场动画_reveal动画-程序员宅基地

文章浏览阅读2k次。一、效果二、知识点CircularReveal动画、透明主题、转场动画(非必须)三、方案假设有两个Activity A和B。Reveal圆形Activity转场动画效果先从A到B,那么基本方案如下:确定要显示的圆形动画中心起点位置通过Intent将起点位置从Activity A传递BActivity B主题需要是透明的,同时先隐藏布局视图在Activity A中启动Activi..._reveal动画