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的面向对象思想分析
Jan 14 Python
python通过pil模块获得图片exif信息的方法
Mar 16 Python
举例讲解Python中is和id的用法
Apr 03 Python
简单谈谈python的反射机制
Jun 28 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
tornado 多进程模式解析
Jan 15 Python
python抓取搜狗微信公众号文章
Apr 01 Python
面向对象学习之pygame坦克大战
Sep 11 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
Python hashlib模块实例使用详解
Dec 24 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
详解查看Python解释器路径的两种方式
Oct 15 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
php使用MySQL保存session会话的方法
2015/06/26 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
浅谈Python3中print函数的换行
2020/08/05 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
Python中过滤字符串列表的方法
2020/12/22 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
电大毕业个人生自我鉴定
2014/03/26 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
会计岗位职责
2015/02/03 职场文书
运动会观后感
2015/06/09 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书