专栏首页博文视点Broadview远程定时开关机方法

远程定时开关机方法

无论家用电脑还是公司的电脑,远程定时开关机都是一个非常实用的功能,只是一般都不太受关注。

我们公司有几台高性能的GPU服务器,每台服务器的功率为2千瓦,这几台服务器持续运行一年,光电费就得大几万 而且长期运行容易加速硬件老化

但是用了远程定时开关机的话,起码能省下一半的电费,也延长了设备的使用寿命!往大了说这是为国家节能减排,往小了说也是为公司降低成本,里外里都是一件好事!

定时开关机是个非常简单又实用的功能,跟着本文用不了10分钟你就能学会如何进行操作!

超简单的定时关机方法

以Windows系统为例,只要在 cmd 命令行中输入下面的 shutdown 命令,在等到设定的超时时间到了之后电脑就会自动关机。

1# 其中-t后面的参数表示多少秒后开始关机            
2shutdown -s -t 3600

在办公条件下,我更推荐使用电脑休眠

相比于关机,休眠模式能保存当前的电脑环境,从而在下次开机后能够瞬间恢复之前的办公环境,大大减少了大家再次打开相关文件或软件的时间。

休眠功能即可以直接通过开始菜单里的电源选项完成,也可以使用 shutdown 命令来完成,如下:

1shutdown /h

配合着 at 命令休眠功能也能实现定时执行。

例如我每天晚上6点下班,接着会让Python执行一段约40分钟的例行任务,然后再休眠电脑,那么我就可以使用下面的命令让电脑每天晚上7点钟自动准时休眠,而不用让人等到7点钟再手动关机啦。

1at 19:00 /every:M,T,W,Th,F,S,Su "shutdown /h"

远程定时开机 Wake on LAN

实现了定时关机之后,还得给电脑定个闹钟,让它“按时起床工作”,这就是远程定时开机功能,主要技术原理是: Wake on LAN技术 (简称WOL),中文叫做“网络唤醒”或者“远端唤醒”。

大概过程就是计算机设备在休眠或关机时主板和网卡上还会保持微弱的供电,网卡仍然会监听局域网内发来的广播包,并对其进行解析,解析后如果发现是符合协议的本机魔法数据包,那么网卡就会通知主板进行系统唤醒,恢复运行状态。

  • 三个步骤实现WOL

第一步 查看网卡是否支持WOL功能

这需要进入到电脑的 BIOS 设置里面,不过不同型号主板的 BIOS 进入和设置方式是千差万别的,所以没有统一的方式,比如有的电脑 BIOS 是在开机时通过 Del 键进入的,有的是通过 F2 键进入的,还有的是通过 Esc 键进入的,所以具体的 BIOS 要具体的研究。

在进入到 BIOS 系统之后,就得在界面上的各种菜单或下拉选项中寻找具有类似 Remote Wake Up 或 Wake on LAN 含义的选项(因为名字并不固定统一,所以词能达意就中了)。

一般情况是在电源管理菜单下,但也有例外,所以需要仔细查找。如果实在找不到的话,说明你的设备不支持WOL技术,等下次换电脑的时候换个好的吧

哈哈。如果找到了,就将选项设置为启用,保存 BIOS 设置并重启进入Windows系统。

其实现在的电脑大部分都是支持这个技术的,不支持的是少数,不同主板的具体设置方式可参考这篇文章进行:http://service.oray.com/question/1331.html

第二步 设置网卡的WOL功能

打开 控制面板 ,依次选择: 查看网络状态和任务 → 更改适配器设置 → 物理网卡 (网卡可能比较多,注意不要选错了,一般选择那个Intel开头的,因为它是实际的有线物理网卡)。

然后 右键 所选物理网卡,选择 属性 ,弹出 以太网属性设置窗口 ,再点击 配置 按钮进入 网络适配器属性设置窗口 ,将 高级 面板下面的 唤醒魔包 属性值设置为 启用

再将 电源管理 面板中的 允许此设备唤醒计算机 选项勾选

完成上述操作之后,还要记录下网卡的MAC地址(也称为网卡的物理地址)以备下一步使用:

操作方法就是双击刚才的物理网卡,弹出以太网状态窗口,点击其中的详细信息,那么就可以看到网卡对应的MAC地址了,Ctrl+c复制下来就可以了。

第三步 远程发送魔法数据包唤醒机器

这一步在一些路由器、电脑软件、手机APP中其实是可以实现的,但不是太灵活,所以这里教大家一个通过Python程序来实现的方法,这样也方便大家在我代码的基础上进行定制化扩展或者增强。

首先,保证要唤醒的各个电脑电源都是开着的状态,并且保证其中一台是运行且联网的状态。

电脑资源紧张的同学,可以参考我们之前的文章 《在手机上装Python》 通过安卓手机配置Python环境。

将这台电脑作为集中控制器,因为要由它来统一往别的电脑发送魔法数据包。详细的代码如下,脚本名为wol.py,大家只要修改和添加MAC地址列表中的就可以正常使用了。

 1# 导入所需模块
 2import socket, binascii
 3
 4# 所有要远程定时开机电脑的MAC地址列表,注意要去掉MAC地址中的 - 符号
 5pc_mac_list = ['A08000000365',
 6    'A08000000365',
 7    'A08000000366',
 8    'A08000000367',
 9    'A08000000368',
10    'A08000000369',
11    'A08000000370']
12
13def create_magic_packet(mac):
14    """
15    根据目标主机的MAC地址创建一个魔法数据包
16    """
17    data = 'FF' * 6 + mac * 16
18    send_data = binascii.unhexlify(data)
19    return send_data
20
21def send_magic_packet(send_data):
22    """
23    通过socket向目标主机广播魔法数据包
24    """
25    broadcast_address = '255.255.255.255'
26    port = 9
27    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
28    s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
29    s.sendto(send_data, (broadcast_address, port))
30
31if __name__ == '__main__':
32    # 遍历MAC地址列表,分别构造和发送魔法数据包
33    for i in pc_mac_list:
34        send_data = create_magic_packet(i)
35        send_magic_packet(send_data)
36        print('向%s主机发送魔法唤醒包成功,请稍等片刻后查看主机是否开启!' % i)

最后我们将wol.py部署到集中控制器上,假设我们每天早上9点上班,那么我们就可以使用 crontab 设置每天早上8:30执行远程开机,对应的 crontab 设置如下,大家可以参考:

1  30 8 * * * python3 wol.py

更进一步,如果有条件的话,结合远程Jupyter工具一起使用,能够实现随时在家远程开关机,效果更佳顶呱呱。

本文作者:

博海,一个沉迷于技术并且追求艺术的pythoner,欢迎与我交流(微信号:bohy_i)。

本文分享自微信公众号 - 博文视点Broadview(bvbooks),作者:博海

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用Python绘制全国各省新型冠状病毒疫情状况

    本文使用数据说明:数据截至2月2日24时,累计报告确诊病例17205例,现有重症病例2296例,累计死亡病例361例,累计治愈出院475例。疑似病例21558例...

    博文视点Broadview
  • Kotlin构造函数与实例化

    Kotlin作为面向对象的编程语言,也支持为类型声明构造函数。不过Kotlin声明构造函数的方式相比Java有所变化,下面这个示例演示了在Kotlin中声明构造...

    博文视点Broadview
  • 初试Spring Boot:构建第一个Web程序

    开发一个全新的项目,需要先搭建开发环境,例如确定要使用的技术框架及版本,还要考虑各个框架之间的版本兼容问题。完成这些烦琐的工作后,还要对新项目进行配置,测试其能...

    博文视点Broadview
  • 电脑中毒的表现有哪些?电脑中毒了怎么办

    电脑中毒是一种十分普遍的现象,很多人在电脑中毒以后,不知如何是好,害怕电脑当中的重要信息暴露,这时我们该怎么办呢?一般情况下,电脑如果被病毒侵染,当电脑关机的时...

    FreeRonin
  • 数据库的创建、删除、修改

    insert和update规范 无操作:不允许在主表上更新操作,在外表上无操作。 (主表改、删,报错) 层叠:允许在主表上更新操作,同时自动更新外表中被其约束...

    ellipse
  • Ubuntu 18.04 使用弹性网卡配置多个外网IP

    购买服务器后默认只有一个公网IP,经常会遇到单个外网IP无法满足业务需求,此文将介绍,一台服务器如何通过单网卡、多网卡配置多个IP。

    隔离没老王
  • 18:肿瘤面积

    18:肿瘤面积 总时间限制: 1000ms 内存限制: 65536kB描述 在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用...

    attack
  • 大白菜PE系统查看电脑开机密码教程 原

           在电脑使用过程中,大多数用户都习惯在自己电脑上设置开机密码避免他人使用自己的电脑,但是不少用户经常会忘记电脑开机密码,遇见这样的情况有没有什么好...

    拓荒者
  • java 默认首页

    如果用jsp 不用其他框架,我们建一个index.jsp 、index.html等页面就可以访问到默认页了。

    小贝壳
  • 机器学习-使用TensorFlow for Poets训练图像分类器

    今天我们学习如何训练图像分类器,只需通过图像目录即可完成。比如说,你想要构建一个分类器来区分霸龙和三角龙的图片:

    亚乐记

扫码关注云+社区

领取腾讯云代金券