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生成lmdb格式的文件实例
Nov 08 Python
通过shell+python实现企业微信预警
Mar 07 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
MATLAB数学建模之画图汇总
Jul 16 Python
Python连接Impala实现步骤解析
Aug 04 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
python数据处理之Pandas类型转换
Apr 28 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的FTP学习(四)
2006/10/09 PHP
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
js变量以及其作用域详解
2020/07/18 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python转码问题的解决方法
2008/10/07 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
python之拟合的实现
2019/07/19 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
Django中的AutoField字段使用
2020/05/18 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
python时间time模块处理大全
2020/10/25 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
面试后的英文感谢信
2014/02/01 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
酒店管理求职信范文
2014/04/06 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
导游词之青岛太清宫
2019/12/13 职场文书