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 相关文章推荐
django认证系统实现自定义权限管理的方法
Jul 16 Python
python os模块简单应用示例
May 23 Python
详解python调用cmd命令三种方法
Jul 08 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Python configparser模块常用方法解析
May 22 Python
Python如何读写CSV文件
Aug 13 Python
Python 必须了解的5种高级特征
Sep 10 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
关于python中导入文件到list的问题
Oct 31 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 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
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
Javascript模块模式分析
2008/05/16 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
Python中的is和id用法分析
2015/01/26 Python
Python Sleep休眠函数使用简单实例
2015/02/02 Python
Python正则捕获操作示例
2017/08/19 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
毕业生多媒体设计求职信
2013/10/12 职场文书
管理建议书范文
2014/05/13 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
优秀班集体申报材料
2014/12/25 职场文书
小学家长通知书评语
2014/12/31 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
微信小程序和php的登录实现
2021/04/01 PHP