Python 远程开关机的方法


Posted in Python onNovember 18, 2020

用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机。

GitHub 仓库地址:

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

本文目标

  • 远程开机原理
  • Python 远程开机代码实现
  • Python 关机说明

Python 开机

关于用程序来开机,是怎么做到的呢?这就是 WOL 技术 Wake-On-Lan, 利用计算机在关机或休眠状态时,网卡及主板部分仍然有微弱的供电,当然要保持电源是插上的,而且是有线连接。所以即使在关机情况下,网卡还是有一定运作能力的,可以监听计算机外部的网上广播信息,当发现特定格式的信息后就会执行开机。现在的主板基本都支持。

只需要在网络适配器属性中配置下面两个选项

Python 远程开关机的方法

Python 远程开关机的方法

下图这个勾不能选上,我们要保证网卡在关机后仍有供电,如果你关机后,网口的灯不亮了,就不行了,要保持网口灯亮。

Python 远程开关机的方法

这个特定数据也有个好听的名字叫 Magic Packet(魔法数据包)。一般用过 UDP 协议进行广播。端口一般是7或者9. 魔法数据包总是以"FF FF FF FF FF FF" 连续6个 "FF",后面是 MAC 地址信息,一旦网卡侦测到数据包内容,就会唤醒目标计算机。

我们还是来看一下代码怎么写,代码涉及到 UDP 网络编程这块,后面会专门写写网络编程这块内容。
此函数只需输入目标计算机的 MAC 地址即可,在局域网中(当然,如果你的计算机有公网IP,那么在公网中也是可以的)另一台计算机上运行此程序,目标计算机即可自动开机。

代码如下,代码本身很短,原理也很简单:

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]) # 构造原始数据格式
  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))

    print("Done")
  except Exception as e:

    print(e)

Python 关机

关机来说相对就容易多了,网上也有很多现成的解决方案。大多数是用程序扫描邮箱,如果收到关机相关关键词的邮件,则程序自动执行关机命令。
另外如果只是在局域网里实现关机,或者你有公网 IP 地址的话,也可以在本地计算机起一个服务,比如用 Flask 运行在5000端口。向5000这个地址发送指令即可。
本机程序中需要有一条执行关机的命令即可

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

以上就是Python 远程开关机的方法的详细内容,更多关于python 远程开关机的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
python实现报表自动化详解
Nov 16 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
django用户登录和注销的实现方法
Jul 16 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 Python
python 元组和列表的区别
Dec 30 #Python
基于Python爬取搜狐证券股票过程解析
Nov 18 #Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 #Python
Anaconda的安装与虚拟环境建立
Nov 18 #Python
如何基于Python pygame实现动画跑马灯
Nov 18 #Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 #Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 #Python
You might like
zend api扩展的php对象的autoload工具
2011/04/18 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
常用js脚本
2006/12/03 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python单例模式实例分析
2015/01/14 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
解决yum对python依赖版本问题
2019/07/05 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
python利用opencv实现颜色检测
2021/02/23 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
美术教学感言
2014/02/22 职场文书
工作过失检讨书
2014/02/23 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
论文评语大全
2014/04/29 职场文书
股东大会通知
2015/04/24 职场文书
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技